릴리스 노트
소개
지원 매트릭스
성능
트랜스포머 훈련 속도 향상
BERT 훈련 속도 향상
변환기 추론 속도 향상
BERT 추론 속도 향상
설치
PyPI에서 설치
소스에서 빌드
시작하기
처음부터 LightSeq 교육
Fairseq의 LightSeq 교육
Hugging Face BERT를 통한 LightSeq 훈련
Fairseq에서 LightSeq 추론
포옹 얼굴 BERT에서 LightSeq 추론
추론 서버를 사용한 LightSeq 배포
우리를 인용
우리는 채용 중입니다!
[2022.10.25] int8 혼합 정밀도 훈련 및 추론을 지원하는 릴리스 v3.0.0 버전입니다. [中文介绍]
[2021.06.18] fp16 혼합 정밀도 훈련을 지원하는 v2.0.0 버전 출시. [中文介绍]
[2019.12.06] fp16 혼합 정밀도 추론을 지원하는 릴리스 v1.0.0 버전입니다. [中文介绍]
LightSeq는 CUDA에서 구현된 시퀀스 처리 및 생성을 위한 고성능 교육 및 추론 라이브러리입니다. BERT, GPT, Transformer 등과 같은 최신 NLP 및 CV 모델을 매우 효율적으로 계산할 수 있습니다. 따라서 기계 번역, 텍스트 생성, 이미지 분류 및 기타 시퀀스 관련 작업에 가장 유용합니다.
이 라이브러리는 CUDA 공식 라이브러리(cuBLAS, Thrust, CUB)와 Transformer 모델 제품군에 특별히 융합되고 최적화된 사용자 정의 커널 기능을 기반으로 구축되었습니다. 모델 구성 요소 외에도 추론 라이브러리는 배포하기 쉬운 모델 관리 및 TensorRT 추론 서버 기반 백엔드 제공도 제공합니다. LightSeq를 사용하면 추가 코드를 거의 사용하지 않고 수정된 Transformer 아키텍처를 쉽게 개발할 수 있습니다.
LightSeq 훈련 및 추론은 매우 빠릅니다. 아래는 전반적인 성능입니다.
LightSeq fp16 훈련은 PyTorch fp16 훈련에 비해 최대 3배 의 속도 향상을 달성합니다.
LightSeq int8 훈련은 PyTorch QAT(즉, 양자화 인식 훈련)에 비해 최대 5배 의 속도 향상을 달성합니다.
LightSeq fp16 및 int8 추론은 PyTorch fp16 추론에 비해 각각 최대 12x 및 15x 의 속도 향상을 달성합니다.
LightSeq는 아래 표에 표시된 여러 기능을 지원합니다.
특징 | 지원 목록 |
---|---|
모델 | Transformer, BERT, BART, GPT2, ViT, T5, MT5, XGLM, VAE, 다국어, MoE |
층 | 임베딩, 인코더, 디코더, 기준, 최적화 프로그램 |
정도 | fp32, fp16, int8 |
방법 | 훈련, 추론 |
호환성 | Fairseq, Hugging Face, DeepSpeed |
디코딩 알고리즘 | 빔서치, 다양한 빔서치, 샘플링, CRF |
기타 | 그래디언트 통신 양자화, GEMM 알고리즘 자동 조정 |
아래 표에는 현재 다양한 모델에서 지원되는 실행 모드와 정밀도가 나와 있습니다.
모델 | fp16 훈련 | fp16 추론 | int8 훈련 | int8 추론 |
---|---|---|---|---|
변신 로봇 | 예 | 예 | 예 | 예 |
버트 | 예 | 예 | 예 | 예 |
GPT2 | 예 | 예 | 예 | 예 |
바트 | 예 | 예 | - | - |
T5 | - | 예 | - | - |
MT5 | - | 예 | - | - |
XGLM | - | 예 | - | - |
ViT | 예 | 예 | 예 | 예 |
VAE | - | 예 | - | - |
다국어 | - | 예 | - | 예 |
환경부 | - | 예 | - | - |
Transformer 및 BERT 모델에서 fp16 및 int8 혼합 정밀도를 모두 사용하여 LightSeq 훈련 및 추론의 속도 향상을 테스트합니다. 기준선은 PyTorch fp16 혼합 정밀도입니다. 훈련 실험은 A100 GPU 1개에서 테스트되고 추론 실험은 A100 GPU 8개에서 테스트됩니다.
여기에서 더 많은 성능 결과를 확인할 수 있습니다.
배치 토큰 크기 | 파이토치 QAT | LightSeq fp16 | LightSeq int8 |
---|---|---|---|
512 | 0.36 | 1.99 | 1.86 |
1024 | 0.37 | 1.78 | 1.69 |
2048년 | 0.37 | 1.56 | 1.50 |
4096 | 0.39 | 1.47 | 1.44 |
8192 | 0.41 | 1.44 | 1.44 |
15000 | 0.43 | 1.44 | 1.44 |
배치 토큰 크기 | 파이토치 QAT | LightSeq fp16 | LightSeq int8 |
---|---|---|---|
8 | 0.45 | 2.12 | 1.99 |
16 | 0.44 | 1.92 | 1.80 |
32 | 0.42 | 1.59 | 1.52 |
64 | 0.46 | 1.62 | 1.58 |
128 | 0.46 | 1.74 | 1.70 |
256 | 0.46 | 1.68 | 1.73 |
배치 크기 | 시퀀스 길이 | LightSeq fp16 | LightSeq int8 |
---|---|---|---|
1 | 8 | 8.00 | 9.33 |
1 | 32 | 6.48 | 7.38 |
1 | 128 | 6.24 | 6.19 |
8 | 8 | 9.38 | 10.71 |
8 | 32 | 8.24 | 8.75 |
8 | 128 | 6.83 | 7.28 |
32 | 8 | 11.82 | 14.44 |
32 | 32 | 9.68 | 11.15 |
32 | 128 | 6.68 | 7.74 |
배치 크기 | 시퀀스 길이 | LightSeq fp16 | LightSeq int8 |
---|---|---|---|
1 | 8 | 9.22 | 9.87 |
1 | 32 | 10.51 | 11.30 |
1 | 128 | 9.96 | 10.85 |
8 | 8 | 9.88 | 10.33 |
8 | 32 | 7.79 | 8.22 |
8 | 128 | 4.04 | 4.35 |
32 | 8 | 10.60 | 11.02 |
32 | 32 | 8.11 | 8.85 |
32 | 128 | 1.82 | 2.04 |
Linux에서 Python 3.6~3.8만 지원하는 PyPI에서 LightSeq를 설치할 수 있습니다.
pip 설치 lightseq
소스에서 빌드할 수도 있습니다.
PATH=/usr/local/hdf5/:$PATH ENABLE_FP32=0 ENABLE_DEBUG=0 pip install -e $PROJECT_DIR
자세한 건물 소개는 여기에서 확인하실 수 있습니다.
LightSeq의 사용법을 보여주기 위해 여기에는 몇 가지 샘플이 제공됩니다. 자세한 내용은 전체 사용자 가이드와 예제를 참조하세요.
LightSeq에서 제공하는 모듈을 사용하여 자신만의 모델을 구축할 수 있습니다. 다음은 Transformer 인코더 레이어를 구축하는 예입니다.
먼저 LightSeq Transformer 인코더 모듈을 가져옵니다.
lightseq.training에서 LSTransformerEncoderLayer 가져오기
그런 다음 인코더 구성을 생성하고 해당 구성으로 초기화된 LightSeq 변환기 인코더 레이어를 생성합니다.
구성 = LSTransformerEncoderLayer.get_config(max_batch_tokens=4096,max_seq_len=512,hidden_size=1024,intermediate_size=4096,nhead=16,attn_prob_d ropout_ratio=0.1,activation_dropout_ratio=0.1,hidden_dropout_ratio=0.1,pre_layer_norm=True,activation_fn="relu",fp16=True,local_rank=0, )레이어 = LSTransformerEncoderLayer(config)
인코더 레이어 외에도 유사한 방법을 사용하여 다른 모듈을 생성한 다음 일반 PyTorch 모델로 교육할 수 있습니다.
여기에서 더 많은 사용법을 확인할 수 있습니다.
LightSeq는 모든 고속 및 라이트닝 모듈을 Fairseq에 통합합니다.
먼저 다음 두 가지 요구 사항을 설치하십시오.
pip install fairseq==0.10.2 sacremose
다음을 통해 wmt14 en2de 데이터 세트에서 fp16 혼합 정밀도 번역 작업을 훈련할 수 있습니다.
sh 예제/training/fairseq/ls_fairseq_wmt14en2de.sh
(선택 사항) 그런 다음 fp16 사전 훈련 모델을 기반으로 int8 혼합 정밀도 훈련을 시작할 수 있습니다.
sh 예제/training/fairseq/ls_fairseq_퀀트_wmt14en2de.sh
여기에서 더 많은 사용법을 확인할 수 있습니다.
LightSeq는 Hugging Face BERT의 인코더 레이어를 LightSeq 고속 레이어로 대체합니다.
먼저 다음 요구 사항을 설치해야 합니다.
pip 설치 변환기 seqeval 데이터 세트
다음 교육을 수행하기 전에 다음 디렉터리로 전환해야 합니다.
CD 예제/훈련/huggingface/bert
그런 다음 다양한 작업에 맞게 BERT를 쉽게 미세 조정할 수 있습니다. 명명된 엔터티 인식 작업을 예로 들면 다음을 사용하여 fp16 혼합 정밀도로 BERT를 훈련할 수 있습니다.
파이썬 task_ner/run_ner.sh
(선택 사항) 다음을 통해 fp16 사전 훈련 모델을 기반으로 int8 혼합 정밀도 훈련을 시작할 수도 있습니다.
파이썬 task_ner/run_Quant_ner.sh
여기에서 더 많은 사용법을 확인할 수 있습니다.
위 스크립트를 사용하여 훈련한 후 LightSeq를 사용하여 모델을 빠르게 추론할 수 있습니다.
fp16 PyTorch 가중치를 LightSeq protobuf 또는 HDF5로 변환해야 합니다.
파이썬 내보내기/fairseq/ls_fs_transformer_export.py
(선택 사항) int8 PyTorch 가중치를 LightSeq protobuf 또는 HDF5로 변환할 수도 있습니다.
파이썬 내보내기/fairseq/ls_fs_Quant_transformer_export.py
LightSeq 가중치를 얻은 후에는 다음 코드를 사용하여 빠르게 추론할 수 있습니다.
lsimodel = lsi.Transformer(MODEL_PATH, MAX_BATCH_SIZE)results = model.infer([[63, 47, 65, 1507, 88, 74, 10, 2057, 362, 9, 284, 6, 2, 1)로 lightseq.inference 가져오기 ]])
여기서 MODEL_PATH는 LightSeq 가중치의 경로이고 MAX_BATCH_SIZE는 입력 문장의 최대 배치 크기입니다.
lsi.Transformer
를 lsi.QuantTransformer
로 대체하여 int8 LightSeq 가중치를 빠르게 추론할 수도 있습니다.
여기에서 더 많은 사용법을 확인할 수 있습니다.
Lightseq가 원래 Hugging Face와 얼마나 빠른지 비교하기 위해 end2end bert-base 예제를 제공합니다.
먼저 요구 사항을 설치하고 지정된 디렉터리를 찾아야 합니다.
pip install Transformerscd 예제/추론/Python
그런 다음 간단히 다음 명령을 실행하여 성능을 확인할 수 있습니다. hf_bert_export.py
는 PyTorch 가중치를 LightSeq protobuf 또는 HDF5로 변환하는 데 사용됩니다.
파이썬 내보내기/huggingface/hf_bert_export.py 파이썬 테스트/ls_bert.py
여기에서 더 많은 사용법을 확인할 수 있습니다.
tritonserver와 LightSeq의 동적 링크 라이브러리가 포함된 도커 이미지를 제공하며, 모델 파일을 자체 모델 파일로 교체하기만 하면 추론 서버를 배포할 수 있습니다.
sudo docker pull hexisyztem/tritonserver_lightseq:22.01-1
여기에서 더 많은 사용법을 확인할 수 있습니다.
연구에 LightSeq을 사용하는 경우 다음 논문을 인용해 주세요.
@InProceedings{wang2021lightseq, title = "{L}ight{S}eq: A High Performance Inference Library for Transformers", author = "Wang, Xiaohui and Xiong, Ying and Wei, Yang and Wang, Mingxuan and Li, Lei", booktitle = "Proceedings of the 2021 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies: Industry Papers (NAACL-HLT)", month = jun, year = "2021", publisher = "Association for Computational Linguistics", pages = "113--120", } @article{wang2021lightseq2, title={LightSeq2: Accelerated Training for Transformer-based Models on GPUs}, author={Wang, Xiaohui and Xiong, Ying and Qian, Xian and Wei, Yang and Li, Lei and Wang, Mingxuan}, journal={arXiv preprint arXiv:2110.05722}, year={2021} }
LightSeq 팀은 딥 러닝 시스템, 자연어 처리, 컴퓨터 비전, 음성 등에 대한 배경 지식을 갖춘 인턴 및 FTE를 고용하고 있습니다. 우리는 베이징과 상하이에 본사를 두고 있습니다. 관심이 있으시면 [email protected]으로 이력서를 보내주세요.