[README] [?HF Repo] [?เวอร์ชันเว็บ]
จีน |. อังกฤษ
แบบจำลองขนาดใหญ่ของ Yayi ได้มาจากคำแนะนำในการปรับแต่งข้อมูลโดเมนคุณภาพสูงที่สร้างขึ้นด้วยตนเองหลายล้านรายการ โดยครอบคลุม 5 สาขาหลัก เช่น การประชาสัมพันธ์สื่อ การวิเคราะห์ความคิดเห็นของประชาชน ความมั่นคงสาธารณะ การควบคุมความเสี่ยงทางการเงิน และธรรมาภิบาลในเมือง และ งานสอนภาษาธรรมชาติหลายร้อยงาน ในระหว่างกระบวนการวนซ้ำของโมเดลขนาดใหญ่ Yayi ตั้งแต่น้ำหนักการเริ่มต้นก่อนการฝึกไปจนถึงโมเดลโดเมน เราได้ค่อยๆ เพิ่มความสามารถภาษาจีนขั้นพื้นฐานและความสามารถในการวิเคราะห์โดเมน และเพิ่มบทสนทนาหลายรอบและความสามารถปลั๊กอินบางอย่าง ในเวลาเดียวกัน ด้วยการเพิ่มประสิทธิภาพผลป้อนกลับด้วยตนเองอย่างต่อเนื่องในระหว่างกระบวนการทดสอบภายในของผู้ใช้หลายร้อยราย เราได้ปรับปรุงประสิทธิภาพและความปลอดภัยของโมเดลเพิ่มเติมอีก
เราจะสนับสนุนความพยายามของเราเองในการส่งเสริมการพัฒนาชุมชนโอเพ่นซอร์สโมเดลขนาดใหญ่ที่ได้รับการฝึกอบรมล่วงหน้าของจีน เราจะสร้างระบบนิเวศโมเดลขนาดใหญ่ของ Yayi ร่วมกับพันธมิตรทุกรายผ่านโอเพ่นซอร์สของโมเดลขนาดใหญ่
ข่าว: Yayi Large Model ได้เปิดซอร์สเวอร์ชันโมเดลการปรับให้เหมาะสมของจีนโดยอิงจาก LLaMA 2 เพื่อสำรวจแนวทางปฏิบัติล่าสุดที่เหมาะสำหรับงานหลายโดเมนของจีน
ชื่อรุ่น | การระบุรุ่น HF | ดาวน์โหลดที่อยู่ |
---|---|---|
YAYI -7B | wenge-การวิจัย/ YAYI -7b | ดาวน์โหลดโมเดล |
YAYI -7B-Llama2 | wenge-research/ YAYI -7b-llama2 | ดาวน์โหลดโมเดล |
YAYI -13B-Llama2 | wenge-การวิจัย/ YAYI -13b-llama2 | ดาวน์โหลดโมเดล |
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
ไม่แนะนำให้ใช้รุ่น torch
และ transformers
ให้ต่ำกว่ารุ่นที่แนะนำ
ตุ้มน้ำหนักโมเดล (เวอร์ชัน 7b) ได้รับการเปิดแหล่งที่มาในคลังโมเดล Huggingface ของเรา และคุณสามารถดาวน์โหลดและใช้งานได้ ต่อไปนี้เป็นโค้ดตัวอย่างที่เรียก YAYI -7b
สำหรับการอนุมานงานดาวน์สตรีม โดยสามารถรันบน GPU ตัวเดียว เช่น A100/A800/3090 โดยจะใช้หน่วยความจำวิดีโอประมาณ 20GB เมื่อใช้การอนุมานที่แม่นยำของ 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 ]))
โปรดทราบว่าโทเค็นพิเศษ <|End|>
จะถูกเพิ่มเป็นอักขระสิ้นสุดระหว่างการฝึกโมเดล ดังนั้น eos_token_id
จึงถูกตั้งค่าเป็นรหัสโทเค็นที่สอดคล้องกับอักขระสิ้นสุดใน GenerationConfig
ของโค้ดด้านบน รหัสการอนุมานตามโมเดลการปรับแต่งคำสั่ง LlaMA2 จะแตกต่างกันเล็กน้อย สำหรับรายละเอียด โปรดดูเวอร์ชันที่เกี่ยวข้องในคลังโมเดล Huggingface ของเรา
โปรเจ็กต์นี้อิงตามเฟรมเวิร์ก deepspeed
สำหรับการฝึกโมเดล หลังจากกำหนดค่าสภาพแวดล้อมแล้ว ให้รันสคริปต์ที่เกี่ยวข้องเพื่อเริ่มการฝึก รองรับการปรับแต่งข้อมูลคำสั่งอย่างละเอียดด้วยพารามิเตอร์เต็มรูปแบบ, การปรับแต่งข้อมูลคำสั่งอย่างละเอียดของ LoRA, การปรับแต่งข้อมูลบทสนทนาแบบหลายรอบอย่างละเอียดแบบเต็มพารามิเตอร์ และการปรับแต่งข้อมูลบทสนทนาแบบหลายรอบของ LoRA อย่างละเอียด
รูปแบบข้อมูล : อ้างอิงถึง data/ YAYI _train_example.json
ซึ่งใช้รูปแบบข้อมูล jsonline ของโปรเจ็กต์ Alpaca แต่ละบรรทัดจะมีข้อมูล json หนึ่งส่วน ประกอบด้วยสามช่อง "instruction"
, "input"
และ "output"
ในหมู่พวกเขา "instruction"
และ "input"
เป็นอินพุตคำสั่งและ "output"
คือคำตอบเอาต์พุต
คำแนะนำการใช้งาน : รันคำสั่งต่อไปนี้เพื่อเริ่มการปรับแต่ง Yayi รุ่นใหญ่แบบเต็มพารามิเตอร์ คำสั่งนี้รองรับการฝึกใช้การ์ดหลายใบสำหรับเครื่องเดียว หากคุณต้องการกำหนดค่าการฝึกใช้การ์ดหลายใบและหลายการ์ด โปรดดูเอกสารประกอบอย่างเป็นทางการของ deepspeed ขอแนะนำให้ใช้การกำหนดค่าฮาร์ดแวร์ 4*A100(80G) หรือสูงกว่า
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
รูปแบบข้อมูล : เช่นเดียวกับด้านบน อ้างถึง data/ YAYI _train_example.json
คำแนะนำการใช้งาน : LoRA เป็นวิธีการปรับแต่งแบบละเอียดที่ใช้ทรัพยากรต่ำและมีประสิทธิภาพ และการ์ดใบเดียวสามารถฝึกแบบจำลองพารามิเตอร์ได้หลายหมื่นล้านรายการ โปรเจ็กต์นี้ใช้การปรับแต่ง LoRA อย่างละเอียดโดยอิงจาก peft
เป็นหลัก รันคำสั่งต่อไปนี้เพื่อเริ่มการปรับแต่ง LoRA ของโมเดลขนาดใหญ่ Yayi การปรับแต่งแบบละเอียดสามารถทำได้โดยใช้การ์ด A100 (80G) เพียงใบเดียว และสามารถปรับอัตราการเรียนรู้ให้เป็นค่าที่มากขึ้นได้ ในหมู่พวกเขา --lora-dim
จะตั้งค่าอันดับของเมทริกซ์การอัพเดต ยิ่งค่ามากขึ้น จำนวนพารามิเตอร์สำหรับการฝึกก็จะยิ่งมากขึ้นเท่านั้น --lora-module-name
จะตั้งค่าโมดูลของเมทริกซ์การอัพเดต LoRA ซึ่งสามารถเปลี่ยนแปลงได้ ตามประเภทรุ่น
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
รูปแบบข้อมูล : อ้างอิงถึง data/ YAYI _train_example_multi_rounds.json
ซึ่งเป็นไฟล์ JSON มาตรฐาน ข้อมูลแต่ละชิ้นประกอบด้วย "system"
และ "conversations"
โดยที่ "system"
คือข้อมูลการตั้งค่าบทบาทส่วนกลางและสามารถเป็นสตริงว่างได้ "conversations"
เป็นบทสนทนาหลายรอบระหว่างตัวละครสองตัว มนุษย์ และ YAYI
คำแนะนำการใช้งาน : รันคำสั่งต่อไปนี้เพื่อเริ่มการปรับแต่งแบบเต็มพารามิเตอร์ของโมเดลขนาดใหญ่ Yayi สำหรับข้อมูลบทสนทนาแบบหลายรอบ จะมีการคำนวณเฉพาะการสูญเสียการตอบกลับที่สร้างโดยโมเดลเท่านั้น คำสั่งนี้รองรับการฝึกใช้การ์ดหลายใบสำหรับเครื่องเดียว หากคุณต้องการกำหนดค่าการฝึกใช้การ์ดหลายใบและหลายการ์ด โปรดดูเอกสารประกอบอย่างเป็นทางการของ deepspeed ขอแนะนำให้ใช้การกำหนดค่าฮาร์ดแวร์ 4*A100(80G) หรือสูงกว่า
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
โมเดลขนาดใหญ่ของ Yayi ได้รับการฝึกอบรมตามชุดข้อมูลการปรับแต่งคำสั่งโดเมนคุณภาพสูงระดับล้านของ Zhongke Wenge ในครั้งนี้ เราเปิดชุดข้อมูลการฝึกอบรม 50,000 ชุด ซึ่งสามารถดาวน์โหลดได้จากคลังข้อมูล Huggingface ของเรา ชุดข้อมูลส่วนใหญ่ครอบคลุมหลายสาขาหลัก เช่น การเงิน ความปลอดภัย ความคิดเห็นสาธารณะ และสื่อ เราได้เพิ่มคำนำหน้าพร้อมท์ที่ไม่ต่อเนื่องให้กับข้อมูลคำสั่งส่วนใหญ่ของงานในแต่ละฟิลด์เพื่อแยกแยะข้อมูลในแต่ละฟิลด์ นอกจากนี้ ข้อมูลการฝึกอบรมยังรวมถึงข้อมูลการปรับปรุงความปลอดภัย ข้อมูลความสามารถของปลั๊กอิน ข้อมูลการสนทนาแบบหลายรอบ ฯลฯ
โมเดล SFT ที่ได้รับการฝึกอบรมตามข้อมูลปัจจุบันและโมเดลพื้นฐานยังคงมีปัญหาในแง่ของประสิทธิภาพดังต่อไปนี้:
จากข้อจำกัดของโมเดลข้างต้น เรากำหนดให้นักพัฒนาใช้เฉพาะโค้ดโอเพ่นซอร์ส ข้อมูล แบบจำลอง และอนุพันธ์ที่ตามมาซึ่งสร้างโดยโครงการนี้เพื่อวัตถุประสงค์ในการวิจัยเท่านั้น ไม่ใช่เพื่อวัตถุประสงค์ทางการค้าหรือการใช้งานอื่นใดที่จะก่อให้เกิดอันตรายต่อสังคม โปรดใช้ความระมัดระวังในการระบุและใช้เนื้อหาที่สร้างโดย Yayi Big Model และอย่าเผยแพร่เนื้อหาที่เป็นอันตรายที่สร้างขึ้นไปยังอินเทอร์เน็ต หากเกิดผลเสียใดๆ ผู้สื่อสารจะต้องรับผิดชอบ
โครงการนี้สามารถใช้เพื่อวัตถุประสงค์ในการวิจัยเท่านั้น และผู้พัฒนาโครงการจะไม่รับผิดชอบต่อความเสียหายหรือความสูญเสียใดๆ ที่เกิดจากการใช้โครงการนี้ (รวมถึงแต่ไม่จำกัดเพียงข้อมูล แบบจำลอง รหัส ฯลฯ) โปรดดูข้อจำกัดความรับผิดชอบสำหรับรายละเอียด
รหัสในโครงการนี้เป็นโอเพ่นซอร์สตามโปรโตคอล Apache-2.0 ข้อมูลใช้โปรโตคอล CC BY-NC 4.0 และการใช้น้ำหนักโมเดลซีรีส์ YAYI จำเป็นต้องเป็นไปตาม Model License