Transformers documentation
CPU에서 효율적인 추론하기
시작하기
튜토리얼
Pipeline으로 추론하기AutoClass로 사전 학습된 인스턴스 로드하기데이터 전처리하기사전 학습된 모델 미세 조정하기스크립트로 학습하기🤗 Accelerate로 분산 학습 구성하기만든 모델 공유하기에이전트
태스크 가이드
자연어처리
(번역중) 오디오
(번역중) 컴퓨터 비전
멀티모달
(번역중) 개발자 가이드
🤗 Tokenizers 라이브러리에서 토크나이저 사용하기다국어 모델 추론하기(번역중) Customize text generation strategy모델별 API 사용하기사용자 정의 모델 공유하기Amazon SageMaker에서 학습 실행하기ONNX로 내보내기TFLite로 내보내기TorchScript로 내보내기(번역중) Benchmarks(번역중) Notebooks with examples(번역중) Community resources사용자 정의 도구와 프롬프트문제 해결
(번역중) 성능 및 확장성
성능 및 확장성(번역중) Training on one GPU(번역중) Training on many GPUsCPU에서 훈련다중 CPU에서 훈련하기(번역중) Training on TPUsTensorFlow로 TPU에서 훈련하기(번역중) Training on Specialized HardwareCPU로 추론하기하나의 GPU를 활용한 추론여러 GPU에서 추론(번역중) Inference on Specialized Hardware훈련용 사용자 맞춤형 하드웨어(번역중) Instantiating a big model(번역중) DebuggingTrainer API를 사용한 하이퍼파라미터 탐색TensorFlow 모델을 위한 XLA 통합
(번역중) 기여하기
(번역중) How to contribute to transformers?🤗 Transformers에 새로운 모델을 추가하는 방법어떻게 🤗 Transformers 모델을 TensorFlow로 변환하나요?(번역중) How to add a pipeline to 🤗 Transformers?테스트Pull Request에 대한 검사
(번역중) 개념 가이드
이념과 목표(번역중) Glossary🤗 Transformers로 할 수 있는 작업🤗 Transformers로 작업을 해결하는 방법Transformer 모델군(번역중) Summary of the tokenizers어텐션 매커니즘패딩과 잘라내기BERTology고정 길이 모델의 펄플렉서티(Perplexity)추론 웹 서버를 위한 파이프라인
(번역중) API
(번역중) 메인 클래스
(번역중) Auto Classes(번역중) Callbacks(번역중) Configuration(번역중) Data Collator(번역중) Keras callbacks(번역중) Logging(번역중) Models(번역중) Text Generation(번역중) ONNX(번역중) Optimization(번역중) Model outputs(번역중) Pipelines(번역중) Processors(번역중) Quantization(번역중) Tokenizer(번역중) Trainer(번역중) DeepSpeed Integration(번역중) Feature Extractor(번역중) Image Processor
(번역중) 모델
(번역중) 텍스트 모델
(번역중) 비전 모델
(번역중) 오디오 모델
(번역중) 멀티모달 모델
(번역중) 강화학습 모델
(번역중) 시계열 모델
(번역중) Graph models
(번역중) Internal Helpers
You are viewing v4.32.1 version. A newer version v5.8.1 is available.
CPU에서 효율적인 추론하기
이 가이드는 CPU에서 대규모 모델을 효율적으로 추론하는 방법에 중점을 두고 있습니다.
더 빠른 추론을 위한 BetterTransformer
우리는 최근 CPU에서 텍스트, 이미지 및 오디오 모델의 빠른 추론을 위해 BetterTransformer를 통합했습니다. 이 통합에 대한 더 자세한 내용은 이 문서를 참조하세요.
PyTorch JIT 모드 (TorchScript)
TorchScript는 PyTorch 코드에서 직렬화와 최적화가 가능한 모델을 생성할때 쓰입니다. TorchScript로 만들어진 프로그램은 기존 Python 프로세스에서 저장한 뒤, 종속성이 없는 새로운 프로세스로 가져올 수 있습니다. PyTorch의 기본 설정인 `eager` 모드와 비교했을때, `jit` 모드는 연산자 결합과 같은 최적화 방법론을 통해 모델 추론에서 대부분 더 나은 성능을 제공합니다.TorchScript에 대한 친절한 소개는 PyTorch TorchScript 튜토리얼을 참조하세요.
JIT 모드와 함께하는 IPEX 그래프 최적화
Intel® Extension for PyTorch(IPEX)는 Transformers 계열 모델의 jit 모드에서 추가적인 최적화를 제공합니다. jit 모드와 더불어 Intel® Extension for PyTorch(IPEX)를 활용하시길 강력히 권장드립니다. Transformers 모델에서 자주 사용되는 일부 연산자 패턴은 이미 jit 모드 연산자 결합(operator fusion)의 형태로 Intel® Extension for PyTorch(IPEX)에서 지원되고 있습니다. Multi-head-attention, Concat Linear, Linear+Add, Linear+Gelu, Add+LayerNorm 결합 패턴 등이 이용 가능하며 활용했을 때 성능이 우수합니다. 연산자 결합의 이점은 사용자에게 고스란히 전달됩니다. 분석에 따르면, 질의 응답, 텍스트 분류 및 토큰 분류와 같은 가장 인기 있는 NLP 태스크 중 약 70%가 이러한 결합 패턴을 사용하여 Float32 정밀도와 BFloat16 혼합 정밀도 모두에서 성능상의 이점을 얻을 수 있습니다.IPEX 그래프 최적화에 대한 자세한 정보를 확인하세요.
IPEX 설치:
IPEX 배포 주기는 PyTorch를 따라서 이루어집니다. 자세한 정보는 IPEX 설치 방법을 확인하세요.
JIT 모드 사용법
평가 또는 예측을 위해 Trainer에서 JIT 모드를 사용하려면 Trainer의 명령 인수에 `jit_mode_eval`을 추가해야 합니다.PyTorch의 버전이 1.14.0 이상이라면, jit 모드는 jit.trace에서 dict 입력이 지원되므로, 모든 모델의 예측과 평가가 개선될 수 있습니다.
PyTorch의 버전이 1.14.0 미만이라면, 질의 응답 모델과 같이 forward 매개변수의 순서가 jit.trace의 튜플 입력 순서와 일치하는 모델에 득이 될 수 있습니다. 텍스트 분류 모델과 같이 forward 매개변수 순서가 jit.trace의 튜플 입력 순서와 다른 경우, jit.trace가 실패하며 예외가 발생합니다. 이때 예외상황을 사용자에게 알리기 위해 Logging이 사용됩니다.
Transformers 질의 응답의 사용 사례 예시를 참조하세요.
CPU에서 jit 모드를 사용한 추론:
python run_qa.py \ --model_name_or_path csarron/bert-base-uncased-squad-v1 \ --dataset_name squad \ --do_eval \ --max_seq_length 384 \ --doc_stride 128 \ --output_dir /tmp/ \ --no_cuda \ --jit_mode_eval
CPU에서 IPEX와 함께 jit 모드를 사용한 추론:
python run_qa.py \ --model_name_or_path csarron/bert-base-uncased-squad-v1 \ --dataset_name squad \ --do_eval \ --max_seq_length 384 \ --doc_stride 128 \ --output_dir /tmp/ \ --no_cuda \ --use_ipex \ --jit_mode_eval