Catatan Rilis
Perkenalan
Matriks Dukungan
Pertunjukan
Percepatan Pelatihan Transformer
Percepatan Pelatihan BERT
Percepatan Inferensi Transformator
Mempercepat Inferensi BERT
Instalasi
Instal dari PyPI
Bangun dari Sumber
Memulai
Pelatihan LightSeq dari Awal
Pelatihan LightSeq dari Fairseq
Pelatihan LightSeq dari Memeluk Wajah BERT
Inferensi LightSeq dari Fairseq
Inferensi LightSeq dari Memeluk Wajah BERT
Penerapan LightSeq Menggunakan Server Inferensi
Kutip Kami
Kami sedang merekrut!
[2022.10.25] Rilis versi v3.0.0, yang mendukung pelatihan dan inferensi presisi campuran int8. [中文介绍]
[2021.06.18] Rilis versi v2.0.0, yang mendukung pelatihan presisi campuran fp16. [中文介绍]
[2019.12.06] Rilis versi v1.0.0, yang mendukung inferensi presisi campuran fp16. [中文介绍]
LightSeq adalah pelatihan kinerja tinggi dan perpustakaan inferensi untuk pemrosesan dan pembuatan urutan yang diterapkan di CUDA. Ini memungkinkan komputasi model NLP dan CV modern yang sangat efisien seperti BERT, GPT, Transformer, dll. Oleh karena itu, ini paling berguna untuk terjemahan mesin, pembuatan teks, klasifikasi gambar, dan tugas terkait urutan lainnya.
Pustaka ini dibangun di atas pustaka resmi CUDA (cuBLAS, Thrust, CUB) dan fungsi kernel khusus yang secara khusus digabungkan dan dioptimalkan untuk rangkaian model Transformer. Selain komponen model, pustaka inferensi juga menyediakan manajemen model yang mudah diterapkan dan melayani backend berdasarkan Server Inferensi TensorRT. Dengan LightSeq, seseorang dapat dengan mudah mengembangkan arsitektur Transformer yang dimodifikasi dengan sedikit kode tambahan.
Pelatihan dan inferensi LightSeq sangat cepat. Di bawah ini adalah kinerja keseluruhan:
Pelatihan LightSeq fp16 mencapai kecepatan hingga 3x , dibandingkan dengan pelatihan PyTorch fp16.
Pelatihan LightSeq int8 mencapai kecepatan hingga 5x , dibandingkan dengan PyTorch QAT (yaitu, pelatihan sadar kuantisasi).
Inferensi LightSeq fp16 dan int8 mencapai kecepatan masing-masing hingga 12x dan 15x , dibandingkan dengan inferensi PyTorch fp16.
LightSeq mendukung banyak fitur, seperti yang ditunjukkan pada tabel di bawah.
Fitur | Daftar Dukungan |
---|---|
Model | Transformator, BERT, BART, GPT2, ViT, T5, MT5, XGLM, VAE, Multibahasa, MoE |
Lapisan | penyematan, encoder, decoder, kriteria, pengoptimal |
Presisi | fp32, fp16, int8 |
Mode | pelatihan, inferensi |
Kesesuaian | Fairseq, Memeluk Wajah, DeepSpeed |
Algoritma Penguraian Kode | pencarian berkas, pencarian berkas beragam, pengambilan sampel, CRF |
Yang lain | kuantisasi komunikasi gradien, algoritma GEMM penyetelan otomatis |
Tabel di bawah menunjukkan mode lari dan presisi yang saat ini didukung oleh berbagai model.
Model | fp16 Pelatihan | fp16 Inferensi | Pelatihan int8 | int8 Inferensi |
---|---|---|---|---|
Transformator | Ya | Ya | Ya | Ya |
BERT | Ya | Ya | Ya | Ya |
GPT2 | Ya | Ya | Ya | Ya |
BART | Ya | Ya | - | - |
T5 | - | Ya | - | - |
MT5 | - | Ya | - | - |
XGLM | - | Ya | - | - |
ViT | Ya | Ya | Ya | Ya |
VAE | - | Ya | - | - |
Multibahasa | - | Ya | - | Ya |
Kementerian Luar Negeri | - | Ya | - | - |
Kami menguji kecepatan pelatihan dan inferensi LightSeq menggunakan presisi campuran fp16 dan int8 pada model Transformer dan BERT. Dasarnya adalah presisi campuran PyTorch fp16. Eksperimen pelatihan diuji pada satu GPU A100 dan eksperimen inferensi diuji pada delapan GPU A100.
Hasil kinerja lainnya tersedia di sini.
Ukuran Token Batch | PyTorch 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 |
Ukuran Token Batch | PyTorch 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 |
Ukuran Batch | Panjang Urutan | 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 |
Ukuran Batch | Panjang Urutan | 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 |
Anda dapat menginstal LightSeq dari PyPI, yang hanya mendukung Python 3.6 hingga 3.8 di Linux:
pip instal lightseq
Anda juga dapat membangun dari sumber:
PATH=/usr/local/hdf5/:$PATH ENABLE_FP32=0 ENABLE_DEBUG=0 pip instal -e $PROJECT_DIR
Pengenalan bangunan secara mendetail tersedia di sini.
Kami menyediakan beberapa contoh di sini untuk menunjukkan penggunaan LightSeq. Lihat panduan pengguna lengkap dan contoh untuk lebih jelasnya.
Anda dapat menggunakan modul yang disediakan oleh LightSeq untuk membuat model Anda sendiri. Berikut ini adalah contoh pembuatan lapisan encoder Transformer.
Pertama, impor modul encoder LightSeq Transformer:
dari lightseq.training impor LSTransformerEncoderLayer
Kemudian buat konfigurasi encoder, dan buat layer encoder LightSeq Transformer yang diinisialisasi dengan konfigurasi:
konfigurasi = 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=Benar,activation_fn="relu",fp16=Benar,local_rank=0, )lapisan = LSTransformerEncoderLayer(konfigurasi)
Selain lapisan encoder, modul lainnya dapat dibuat menggunakan metode serupa, dan kemudian dilatih sebagai model PyTorch biasa.
Penggunaan lebih lanjut tersedia di sini.
LightSeq mengintegrasikan semua modul cepat dan kilat ke dalam Fairseq.
Pertama instal dua persyaratan berikut:
pip install fairseq==0.10.2 sakral
Anda dapat melatih tugas terjemahan presisi campuran fp16 pada kumpulan data wmt14 en2de dengan:
sh contoh/pelatihan/fairseq/ls_fairseq_wmt14en2de.sh
(Opsional) Kemudian Anda dapat memulai pelatihan presisi campuran int8 berdasarkan model pra-pelatihan fp16 dengan:
sh contoh/pelatihan/fairseq/ls_fairseq_quant_wmt14en2de.sh
Penggunaan lebih lanjut tersedia di sini.
LightSeq menggantikan lapisan encoder Hugging Face BERT dengan lapisan cepat LightSeq.
Pertama, Anda harus menginstal persyaratan ini:
pip instal kumpulan data seqeval transformator
Sebelum melakukan pelatihan berikutnya, Anda perlu beralih ke direktori berikut:
cd contoh/pelatihan/huggingface/bert
Kemudian Anda dapat dengan mudah menyempurnakan BERT untuk berbagai tugas. Mengambil tugas pengenalan entitas bernama sebagai contoh, Anda dapat melatih BERT dengan presisi campuran fp16 menggunakan:
python task_ner/run_ner.sh
(Opsional) Anda juga dapat memulai pelatihan presisi campuran int8 berdasarkan model pra-pelatihan fp16 dengan:
python task_ner/run_quant_ner.sh
Penggunaan lebih lanjut tersedia di sini.
Setelah pelatihan menggunakan skrip di atas, Anda dapat dengan cepat menyimpulkan model menggunakan LightSeq.
Anda harus mengubah bobot fp16 PyTorch menjadi protobuf LightSeq atau HDF5:
python ekspor/fairseq/ls_fs_transformer_export.py
(Opsional) Anda juga dapat mengubah bobot int8 PyTorch menjadi protobuf LightSeq atau HDF5:
python ekspor/fairseq/ls_fs_quant_transformer_export.py
Setelah mendapatkan bobot LightSeq, Anda dapat dengan cepat menyimpulkannya menggunakan kode berikut:
impor lightseq.inference sebagai 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 ]])
Di sini MODEL_PATH adalah jalur bobot LightSeq Anda dan MAX_BATCH_SIZE adalah ukuran batch maksimal dari kalimat masukan Anda.
Anda juga dapat dengan cepat menyimpulkan bobot int8 LightSeq dengan mengganti lsi.Transformer
dengan lsi.QuantTransformer
.
Penggunaan lebih lanjut tersedia di sini.
Kami memberikan contoh bert-base end2end untuk melihat seberapa cepat Lightseq dibandingkan dengan Hugging Face asli.
Pertama, Anda harus menginstal persyaratan dan mencari direktori yang ditentukan:
pip install contoh transformatorscd/inferensi/python
Kemudian Anda dapat memeriksa kinerjanya hanya dengan menjalankan perintah berikut. hf_bert_export.py
digunakan untuk mengubah bobot PyTorch menjadi protobuf LightSeq atau HDF5.
ekspor python/huggingface/hf_bert_export.py tes python/ls_bert.py
Penggunaan lebih lanjut tersedia di sini.
Kami menyediakan gambar buruh pelabuhan yang berisi tritonserver dan pustaka tautan dinamis LightSeq, dan Anda dapat menerapkan server inferensi hanya dengan mengganti file model dengan file model Anda sendiri.
sudo buruh pelabuhan tarik hexisyztem/tritonserver_lightseq:22.01-1
Penggunaan lebih lanjut tersedia di sini.
Jika Anda menggunakan LightSeq dalam penelitian Anda, harap kutip makalah berikut.
@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} }
Tim LightSeq merekrut Magang dan FTE dengan latar belakang sistem pembelajaran mendalam, pemrosesan bahasa alami, visi komputer, ucapan, dll . Kami berbasis di Beijing dan Shanghai. Jika Anda tertarik, silakan kirimkan resume Anda ke [email protected].