[README] [?HF Repo] [?Versi web]
Cina |. Inggris
Model besar Yayi diperoleh dengan menyempurnakan instruksi pada jutaan data domain berkualitas tinggi yang dibuat secara manual. Data pelatihan mencakup lima bidang utama seperti publisitas media, analisis opini publik, keamanan publik, pengendalian risiko keuangan, dan tata kelola kota, dan ratusan tugas pengajaran bahasa alami. Selama proses berulang model besar Yayi mulai dari bobot inisialisasi pra-pelatihan hingga model domain, kami secara bertahap meningkatkan kemampuan dasar bahasa Mandarin dan kemampuan analisis domain, serta menambahkan beberapa putaran dialog dan beberapa kemampuan plug-in. Pada saat yang sama, melalui optimalisasi umpan balik manual yang berkelanjutan selama proses pengujian internal ratusan pengguna, kami semakin meningkatkan kinerja dan keamanan model.
Melalui sumber terbuka model besar Yayi, kami akan menyumbangkan upaya kami sendiri untuk mempromosikan pengembangan komunitas sumber terbuka model besar yang telah dilatih sebelumnya di Tiongkok. Melalui sumber terbuka, kami akan membangun ekosistem model besar Yayi dengan setiap mitra.
Berita: Yayi Large Model telah membuat versi model pengoptimalan Tiongkok menjadi open source berdasarkan LLaMA 2 untuk mengeksplorasi praktik terbaru yang sesuai untuk tugas multi-domain Tiongkok.
Nama model | ?Identifikasi model HF | Alamat unduhan |
---|---|---|
YAYI -7B | penelitian wenge/ YAYI -7b | Pengunduhan model |
YAYI -7B-Llama2 | penelitian wenge/ YAYI -7b-llama2 | Pengunduhan model |
YAYI -13B-Llama2 | penelitian wenge/ YAYI -13b-llama2 | Pengunduhan model |
git clone https://github.com/wenge-research/YAYI.git
cd YAYI
conda create --name YAYI python=3.8
conda activate YAYI
pip install -r requirements.txt
Versi torch
dan transformers
tidak disarankan lebih rendah dari versi yang direkomendasikan.
Anak timbangan model (versi 7b) telah bersumber terbuka di gudang model Huggingface kami, dan Anda dipersilakan untuk mengunduh dan menggunakannya. Berikut ini adalah contoh kode yang hanya memanggil YAYI -7b
untuk inferensi tugas hilir. Kode ini dapat dijalankan pada satu GPU seperti A100/A800/3090. Dibutuhkan sekitar 20 GB memori video saat menggunakan inferensi presisi FP16:
from transformers import AutoTokenizer , AutoModelForCausalLM , GenerationConfig
import torch
YAYI _7b_path = "wenge-research/ YAYI -7b"
tokenizer = AutoTokenizer . from_pretrained ( YAYI _7b_path )
model = AutoModelForCausalLM . from_pretrained ( YAYI _7b_path , device_map = "auto" , torch_dtype = torch . bfloat16 )
prompt = "你好"
formatted_prompt = f"<|System|>: n A chat between a human and an AI assistant named YAYI . n YAYI is a helpful and harmless language model developed by Beijing Wenge Technology Co.,Ltd. n n <|Human|>: n { prompt } n n <| YAYI |>:"
inputs = tokenizer ( formatted_prompt , return_tensors = "pt" ). to ( model . device )
eos_token_id = tokenizer ( "<|End|>" ). input_ids [ 0 ]
generation_config = GenerationConfig (
eos_token_id = eos_token_id ,
pad_token_id = eos_token_id ,
do_sample = True ,
max_new_tokens = 100 ,
temperature = 0.3 ,
repetition_penalty = 1.1 ,
no_repeat_ngram_size = 0
)
response = model . generate ( ** inputs , generation_config = generation_config )
print ( tokenizer . decode ( response [ 0 ]))
Perhatikan bahwa token khusus <|End|>
ditambahkan sebagai karakter akhir selama pelatihan model, sehingga eos_token_id
disetel ke id token yang sesuai dengan karakter akhir di GenerationConfig
dari kode di atas. Kode inferensi berdasarkan model penyempurnaan instruksi LlaMA2 sedikit berbeda. Untuk detailnya, silakan merujuk ke versi yang sesuai di gudang model Huggingface kami.
Proyek ini didasarkan pada kerangka deepspeed
untuk pelatihan model. Setelah mengonfigurasi lingkungan, jalankan skrip yang sesuai untuk memulai pelatihan. Mendukung penyempurnaan parameter penuh pada data perintah, penyempurnaan LoRA pada data perintah, penyempurnaan parameter penuh pada data dialog multi-putaran, dan penyempurnaan LoRA pada data dialog multi-putaran.
Format data : Lihat data/ YAYI _train_example.json
, yang mengadopsi format data jsonline proyek Alpaca. Setiap baris memiliki satu bagian data json, yang terdiri dari tiga bidang "instruction"
, "input"
, dan "output"
. Diantaranya, "instruction"
dan "input"
adalah masukan instruksi, dan "output"
adalah jawaban keluaran.
Petunjuk pengoperasian : Jalankan perintah berikut untuk memulai penyempurnaan parameter penuh model besar Yayi. Perintah ini mendukung pelatihan multi-kartu mesin tunggal. Jika Anda perlu mengonfigurasi pelatihan multi-mesin dan multi-kartu, silakan merujuk ke dokumentasi resmi deepspeed. Disarankan untuk menggunakan konfigurasi perangkat keras 4*A100(80G) atau lebih tinggi.
deepspeed --num_gpus=8
--module training.trainer
--data-path ./data/ YAYI _train_example.json
--input-model ./checkpoints/ YAYI -7b
--deepspeed ./config/deepspeed_zero2_bf16.json
--epochs 2
--local-output-dir ./checkpoints
--per-device-train-batch-size 8
--per-device-eval-batch-size 8
--logging-steps 1
--save-steps 100
--save-total-limit 10
--eval-steps 100
--warmup-steps 100
--test-size 400
--lr 5e-6
--seed 515
Format data : Sama seperti di atas, lihat data/ YAYI _train_example.json
.
Petunjuk pengoperasian : LoRA adalah metode penyesuaian yang hemat sumber daya dan efisien, dan satu kartu dapat melatih puluhan miliar model parameter. Proyek ini terutama mengimplementasikan penyempurnaan LoRA berdasarkan peft
. Jalankan perintah berikut untuk memulai penyempurnaan LoRA model besar Yayi. Penyempurnaan dapat diselesaikan menggunakan satu kartu A100 (80G), dan kecepatan pemelajaran dapat disesuaikan ke nilai yang lebih besar. Diantaranya, --lora-dim
menetapkan peringkat matriks pembaruan. Semakin besar nilainya, semakin besar jumlah parameter untuk pelatihan; --lora-module-name
menetapkan modul matriks pembaruan LoRA, yang dapat diubah sesuai dengan tipe modelnya.
deepspeed --num_gpus=1
--module training.trainer_lora
--data-path ./data/ YAYI _train_example.json
--input-model ./checkpoints/ YAYI -7b
--deepspeed ./config/deepspeed_zero2_bf16.json
--epochs 2
--local-output-dir ./checkpoints
--per-device-train-batch-size 8
--per-device-eval-batch-size 8
--logging-steps 1
--save-steps 100
--save-total-limit 10
--eval-steps 100
--warmup-steps 100
--test-size 400
--lr 5e-4
--seed 515
--lora-dim 16
--lora-module-name query_key_value
Format data : lihat data/ YAYI _train_example_multi_rounds.json
, yang merupakan file JSON standar. Setiap bagian data terdiri dari "system"
dan "conversations"
, di mana "system"
adalah informasi pengaturan peran global dan dapat berupa string kosong, "conversations"
Ini adalah dialog multi-putaran antara dua karakter, manusia dan YAYI .
Petunjuk pengoperasian : Jalankan perintah berikut untuk memulai penyempurnaan parameter penuh model besar Yayi. Untuk data dialog multi-putaran, hanya hilangnya balasan yang dihasilkan oleh model yang dihitung. Perintah ini mendukung pelatihan multi-kartu mesin tunggal. Jika Anda perlu mengonfigurasi pelatihan multi-mesin dan multi-kartu, silakan merujuk ke dokumentasi resmi deepspeed. Disarankan untuk menggunakan konfigurasi perangkat keras 4*A100(80G) atau lebih tinggi.
deepspeed --num_gpus=8
--module training.trainer_multi_rounds
--data-path ./data/ YAYI _train_example_multi_rounds.json
--input-model ./checkpoints/ YAYI -7b
--deepspeed ./config/deepspeed_zero2_bf16.json
--epochs 2
--local-output-dir ./checkpoints
--per-device-train-batch-size 8
--per-device-eval-batch-size 8
--logging-steps 1
--save-steps 100
--save-total-limit 10
--eval-steps 100
--warmup-steps 100
--test-size 400
--lr 5e-7
--seed 515
data/ YAYI _train_example_multi_rounds.json
.Model besar Yayi dilatih berdasarkan kumpulan data penyempurnaan instruksi domain berkualitas tinggi milik Zhongke Wenge kali ini. Kami membuka sumber 50.000 kumpulan data pelatihan kali ini, yang dapat diunduh dari gudang data Huggingface kami. Kumpulan data terutama mencakup beberapa bidang utama seperti keuangan, keamanan, opini publik, dan media. Kami telah menambahkan awalan cepat terpisah ke sebagian besar data perintah tugas di setiap bidang untuk membedakan data di setiap bidang. Selain itu, data pelatihan juga mencakup beberapa data peningkatan keamanan, data kemampuan plug-in, data dialog multi-putaran, dll.
Model SFT yang dilatih berdasarkan data terkini dan model dasar masih memiliki permasalahan efektivitas sebagai berikut:
Berdasarkan batasan model di atas, kami mewajibkan pengembang untuk hanya menggunakan kode sumber terbuka, data, model, dan turunan berikutnya yang dihasilkan oleh proyek ini untuk tujuan penelitian dan bukan untuk tujuan komersial atau penggunaan lain yang akan menimbulkan kerugian bagi masyarakat. Harap berhati-hati dalam mengidentifikasi dan menggunakan konten yang dihasilkan oleh Yayi Big Model, dan jangan menyebarkan konten berbahaya yang dihasilkan ke Internet. Jika terjadi akibat buruk, komunikator akan bertanggung jawab.
Proyek ini hanya dapat digunakan untuk tujuan penelitian, dan pengembang proyek tidak bertanggung jawab atas segala kerugian atau kerugian yang disebabkan oleh penggunaan proyek ini (termasuk namun tidak terbatas pada data, model, kode, dll.). Silakan lihat penafian untuk detailnya.
Kode dalam proyek ini bersifat open source sesuai dengan protokol Apache-2.0, data mengadopsi protokol CC BY-NC 4.0, dan penggunaan bobot model seri YAYI harus mengikuti Lisensi Model.