Open-ChatGPT
เป็นไลบรารีโอเพ่นซอร์สที่ช่วยให้คุณฝึกโมเดล ai ที่คล้ายกับ ChatGPT ที่มีความเฉพาะตัวเป็นพิเศษ โดยใช้ข้อมูลของคุณเองและคำนวณน้อยที่สุด
Open-ChatGPT
เป็นเฟรมเวิร์กระบบทั่วไปสำหรับเปิดใช้ประสบการณ์การฝึกอบรมแบบครบวงจรสำหรับโมเดลที่คล้ายกับ ChatGPT โดยสามารถนำโมเดลภาษาขนาดใหญ่ที่ผ่านการฝึกอบรมมาล่วงหน้าที่คุณชื่นชอบโดยอัตโนมัติผ่านสไตล์ OpenAI InstructGPT สามขั้นตอนเพื่อสร้างโมเดลสไตล์ ChatGPT คุณภาพสูงของคุณเอง
เราได้นำ RLHF ไปใช้ (การเรียนรู้แบบเสริมแรงด้วยผลตอบรับจากมนุษย์) ซึ่งขับเคลื่อนโดยไลบรารีหม้อแปลงและ DeepsSpeed รองรับการฝึกอบรมแบบกระจายและการขนถ่าย ซึ่งสามารถรองรับโมเดลขนาดใหญ่มากได้
หากคุณชอบโครงการนี้ โปรดแสดงการสนับสนุนโดยติดดาวไว้
[2023/05] เราใช้ Stanford Alpaca Lora
[2023/05] เราใช้ Stanford Alpaca
[2023/04] เราได้เปิด ตัวไปป์ไลน์ RLHF (การเรียนรู้เสริมด้วยคำติชมของมนุษย์)
[2023/03] เราได้เปิดตัวโค้ด OpenChatGPT: ไลบรารีโอเพ่นซอร์สสำหรับฝึก ChatBot เช่น ChatGPT
Open-ChatGPT: การใช้งาน ChatGPT แบบโอเพ่นซอร์ส
ไม่มีหน่วยความจำเพียงพอ
การปรับแต่ง Alpaca-7B อย่างละเอียด
การใช้ Deep Speed
ปรับแต่ง Alpaca-7B ด้วย Lora
ชุดข้อมูลคำสั่ง
ชุดข้อมูล RLHF
การประมวลผลข้อมูลล่วงหน้า
การจัดรูปแบบข้อมูล
การแนะนำ
ข่าว
สารบัญ
การรวบรวมข้อมูล
ติดตั้ง
คำสั่ง Fintune
การอนุมาน
มีส่วนร่วม
ใบอนุญาต
รับทราบ
การอ้างอิง
ชุดข้อมูลการปรับแต่งคำสั่งแบบโอเพ่นซอร์สเพื่อฝึก LLM ผ่านการแชท (ข้อความและหลายโมดัล) (GPT-4, ChatGPT,LLaMA,Alpaca)
จากสิ่งนี้ (@jianzhnie) เราจึงติดป้ายกำกับชุดข้อมูลที่รวบรวมแต่ละชุดตามกฎต่อไปนี้:
(Langual) ภาษาแท็ก:
EN: ชุดข้อมูลคำสั่งเป็นภาษาอังกฤษ
CN: ชุดข้อมูลคำสั่งเป็นภาษาจีน
ML: ชุดข้อมูลคำสั่ง [หลายภาษา] ในหลายภาษา
(งาน) งานแท็ก:
MT: [หลายงาน] ชุดข้อมูลที่มีหลายงาน
TS: ชุดข้อมูล [เฉพาะงาน] ที่ออกแบบมาสำหรับงานเฉพาะ
(Gen) วิธีการสร้าง:
HG: [ชุดข้อมูลที่สร้างโดยมนุษย์] ชุดข้อมูลที่สร้างโดยมนุษย์
SI: [การสอนด้วยตนเอง] ชุดข้อมูลที่สร้างขึ้นโดยใช้วิธีการสอนตนเอง
MIX: [ชุดข้อมูลแบบผสม] ชุดข้อมูลมีทั้งข้อมูลที่มนุษย์และเครื่องจักรสร้างขึ้น
COL: [การรวบรวมชุดข้อมูล] ชุดข้อมูลที่สร้างจากชุดข้อมูลอื่น ๆ
โครงการ | ชุดข้อมูล | องค์กร | ตัวเลข | หรั่ง | งาน | พล | พิมพ์ | รศ |
---|---|---|---|---|---|---|---|---|
ห่วงโซ่แห่งความคิด | cot_data |ไม่กี่ช็อต_ดาต้า | 74771 | TH/CN | มท | เอชจี | สั่งสอนโดยใช้เหตุผลเกี่ยวกับเปล | การใส่คำอธิบายประกอบ CoT กับข้อมูลที่มีอยู่ | |
GPT4all | nomic-ai/gpt4all-j-พร้อมท์รุ่น | โนมิก-ไอ | 806199 | TH | มท | พ.อ | รหัส เรื่องราว และบทสนทนา | การกลั่นจาก GPT-3.5-turbo |
จีพีครู | GPT-4 General-Instruct |สวมบทบาท-สอน |Code-Instruct | ช่างทำเครื่องมือ | เทคเนียม1 | 29013 | TH | มท | เอสไอ | ทั่วไป, สวมบทบาท, ช่างสร้างเครื่องมือ | GPT-4 และผู้สร้างเครื่องมือ |
กวานาโก | ชุดข้อมูล JosephusCheung/Guanaco | โจเซฟัสเฉิง | 534610 | มล | มท | เอสไอ | งานด้านภาษาต่างๆ | ข้อความ-ดาวินชี-003 |
HC3 | สวัสดี-SimpleAI/HC3 | สวัสดี-SimpleAI | 万得资讯 | 37175 | TH/CN | TS | ผสม | การประเมินบทสนทนา | มนุษย์หรือ ChatGPT |
HC3-จีน | สวัสดี-SimpleAI/HC3-จีน | สวัสดี-SimpleAI|万得资讯 | 13ก | ซีเอ็น | TS | ผสม | การประเมินบทสนทนา | มนุษย์หรือ ChatGPT |
เนื้ออัลปาก้า | ทัตสึแล็บ/อัลปาก้า | ทัตสึ-แล็บ | 52002 | TH | มท | เอสไอ | คำแนะนำทั่วไป | ข้อความ-ดาวินชี-003 |
ข้อมูลอัลปาก้าสะอาดแล้ว | Yahma/alpaca-ทำความสะอาดแล้ว | ยาห์มา | 52k | TH | มท | เอสไอ | คำแนะนำทั่วไป | ข้อความ-ดาวินชี-003 |
จีน-LLaMA-อัลปาก้า | alpaca_data_zh_51k | ยัมชุ่ย(讯飞) | 51k | ซีเอ็น | มท | เอสไอ | คำแนะนำทั่วไป | ข้อความ-ดาวินชี-003 |
Luotuo-จีน-LLM 骆驼 | trans_chinese_alpaca_data | LC1332(商汤) | 52k | ซีเอ็น | มท | เอสไอ | คำแนะนำทั่วไป | ข้อความ-ดาวินชี-003 |
คำแนะนำตามธรรมชาติ | งาน Allen AI 61|งาน 1.5k | อัลเลน เอไอ | 5040134 | มล | มท | พ.อ | งาน nlp ที่หลากหลาย | การรวบรวมชุดข้อมูลที่มีคำอธิบายประกอบโดยมนุษย์ |
เบลล์_cn | เบลล์กรุ๊ป/train_1M_CN |เบลล์กรุ๊ป/train_0.5M_CN | BelleGroup(链家) | 1079517 | ซีเอ็น | ทีเอส/มอนแทนา | เอสไอ | ทั่วไป การใช้เหตุผลทางคณิตศาสตร์ บทสนทนา |
ที่นี่ เราแสดงรายการเพียงส่วนเล็กๆ ของรายการชุดข้อมูลการปรับแต่งคำสั่ง หากต้องการค้นหาชุดข้อมูลเพิ่มเติม โปรดตรวจสอบลิงก์ต่อไปนี้: jianzhnie/awesome-instruction-datasets: ชุดข้อมูลโอเพ่นซอร์สเพื่อฝึก LLM ตามคำสั่ง (ChatGPT) ,ลามะ,อัลปาก้า)
ชุดข้อมูลการปรับแต่งคำสั่ง / การเรียนรู้แบบเสริมกำลังจากผลตอบรับของมนุษย์ (RLHF) เป็นองค์ประกอบสำคัญของ LLM ที่ทำตามคำสั่ง เช่น ChatGPT Follwing คือรายการชุดข้อมูลที่ครอบคลุมซึ่งใช้สำหรับการปรับแต่งคำสั่งใน LLM ต่างๆ ทำให้นักวิจัยและนักพัฒนาสามารถเข้าถึงและใช้ทรัพยากรเหล่านี้ได้ง่ายขึ้น
โครงการ | องค์กร | ตัวเลข | หรั่ง | สรุป |
---|---|---|---|---|
webgpt_comparisons | โอเพ่น | 19,578 | ภาษาอังกฤษ | ในรายงาน WebGPT ผู้เขียนได้ฝึกอบรมรูปแบบการให้รางวัลจากความคิดเห็นของมนุษย์ พวกเขาใช้โมเดลการให้รางวัลเพื่อฝึกโมเดลการตอบคำถามแบบยาวเพื่อให้สอดคล้องกับความชอบของมนุษย์ นี่คือชุดข้อมูลของการเปรียบเทียบทั้งหมดที่ทำเครื่องหมายว่าเหมาะสำหรับการสร้างแบบจำลองรางวัลเมื่อสิ้นสุดโปรเจ็กต์ WebGPT มีการเปรียบเทียบทั้งหมด 19,578 รายการ |
เอสเอชพี | สแตนฟอร์ดแอลพี | 349 ก | ภาษาอังกฤษ | SHP คือชุดข้อมูลความพึงพอใจของมนุษย์โดยรวมมากกว่าการตอบคำถาม/คำแนะนำจำนวน 385,000 รายการในสาขาวิชาต่างๆ 18 สาขาวิชา ตั้งแต่การทำอาหารไปจนถึงคำแนะนำด้านกฎหมาย การตั้งค่านี้มีไว้เพื่อสะท้อนถึงประโยชน์ของคำตอบหนึ่งเหนืออีกคำตอบหนึ่ง และมีวัตถุประสงค์เพื่อใช้สำหรับการฝึกโมเดลรางวัล RLHF และโมเดลการประเมิน NLG (เช่น SteamSHP) |
ชุดข้อมูล rlhf-reward-datasets | ยี่ถิงเซี่ย | 76.3 ก | ภาษาอังกฤษ | |
Dahoas/full-hh-rlhf | ดาโฮส | 112 ก | ภาษาอังกฤษ | ชุดข้อมูล HH ของ Anthropic ได้รับการจัดรูปแบบใหม่เป็นตัวอย่างที่ได้รับการคัดเลือกและปฏิเสธทันที |
Dahoas/สังเคราะห์-instruct-gptj-pairwise | ดาโฮส | ภาษาอังกฤษ | ||
Dahoas/rm-คงที่ | ดาโฮส | 76.3k | ภาษาอังกฤษ | การแยก hh-static ที่ใช้สำหรับโมเดลรางวัลการฝึกหลังจากการปรับแต่งแบบละเอียดภายใต้การดูแล |
มานุษยวิทยา/hh-rlhf | มานุษยวิทยา | 22k | ภาษาอังกฤษ | ชุดข้อมูล RLHF นี้เป็นชุดข้อมูล 'ออนไลน์' ที่มีการทำซ้ำซึ่งมีข้อมูลจากโมเดลภาษา 52B ประกอบด้วยการเปรียบเทียบความช่วยเหลือ 22,000 รายการ และไม่มีข้อมูลการรวมทีมสีแดง |
คำแนะนำ-การปรับแต่งด้วย-GPT-4/GPT-4-LLM | คำแนะนำ-การปรับแต่งด้วย-GPT-4 | 52k | ภาษาอังกฤษ | คำตอบที่ได้รับการจัดอันดับ (หมายเหตุ: ข้อมูลได้รับการประเมินโดยโมเดล GPT-4 ไม่ใช่มนุษย์) ของการแจ้งเตือน Alpaca จากสามรุ่น (GPT-4, GPT-3.5 และ OPT-IML) โดยขอให้ GPT-4 ให้คะแนนคุณภาพ ผู้เขียนเชื่อว่า "GPT-4 สามารถระบุและแก้ไขข้อผิดพลาดของตนเองได้ และตัดสินคุณภาพของคำตอบได้อย่างแม่นยำ" |
thu-coai/ความปลอดภัย-พร้อมท์ | thu-coai | 100,000 | ชาวจีน | 中文安全พร้อมท์,用于评测和提升大模型的安全性,将模型的输出与人类的价值观对齐。 |
โครงการ Chatgpt-การเปรียบเทียบ-การตรวจจับ |
หากต้องการค้นหาชุดข้อมูลเพิ่มเติม โปรดดูลิงก์ต่อไปนี้: jianzhnie/awesome-instruction-datasets: ชุดข้อมูลโอเพ่นซอร์สเพื่อฝึก LLM ที่ปฏิบัติตามคำแนะนำ (ChatGPT,LLaMA,Alpaca)
เราได้พัฒนาโค้ดการประมวลผลข้อมูลล่วงหน้าที่นำเสนออินเทอร์เฟซแบบรวมสำหรับโมเดลภาษาขนาดใหญ่ต่างๆ โค้ดนี้สามารถใช้เพื่อประมวลผลข้อมูลล่วงหน้าเพื่อวัตถุประสงค์ที่หลากหลาย เช่น Instruct Tuning และงานการสร้างแบบจำลอง RLHF หากคุณสนใจที่จะเรียนรู้เพิ่มเติม โปรดตรวจสอบลิงก์ต่อไปนี้ไปยังชุดข้อมูลและยูทิลิตี้ข้อมูลของเรา:
prompt_dataset.py
data_utils.py
ในคอลเลกชันของเรา ข้อมูลทั้งหมดได้รับการจัดรูปแบบโดยใช้เทมเพลตเดียวกัน แต่ละตัวอย่างมีโครงสร้างดังต่อไปนี้:
[ {"instruction": instruction string, "input": input string, # (may be empty) "output": output string} ]
โคลนคอมไพล์ https://github.com/jianzhnie/open-chatgpt.git pip ติดตั้ง -r ข้อกำหนด.txt
เพฟต์
หากคุณต้องการใช้ LORA ร่วมกับวิธีการประหยัดพารามิเตอร์อื่นๆ โปรดติดตั้ง peft เป็นการพึ่งพาเพิ่มเติม
ดีพสปีด
หากคุณต้องการเร่งการฝึกอบรม LLM โดยใช้เทคนิคต่างๆ เช่น Pipeline Parallelism การไล่ระดับจุดตรวจสอบ และ Tensor Fusion กรุณาติดตั้ง DeepSpeed
เราปรับแต่งโมเดลของเราโดยใช้โค้ดการฝึก Hugging Face แบบมาตรฐาน เราปรับแต่ง LLaMA-7B และ LLaMA-13B ด้วยไฮเปอร์พารามิเตอร์ต่อไปนี้:
ไฮเปอร์พารามิเตอร์ | ลามา-7บี | ลามา-13บี |
---|---|---|
ขนาดชุด | 128 | 128 |
อัตราการเรียนรู้ | 2e-5 | 1e-5 |
ยุค | 3 | 5 |
ความยาวสูงสุด | 512 | 512 |
น้ำหนักลด | 0 | 0 |
คุณสามารถใช้คำสั่งต่อไปนี้เพื่อฝึก Alpaca-7B ด้วย 4 x A100 (40GB)
ตัวอย่างซีดี/อัลปาก้า/ หลาม train_alpaca.py --model_name_or_path 'decapoda-การวิจัย/llama-7b-hf' --data_path tatsu-lab/alpaca --output_dir work_dir/ --num_train_epochs 3 --per_device_train_batch_size 1 --per_device_eval_batch_size 1 --gradient_accumulation_ขั้นตอน 16 --evalue_strategy "ไม่" --save_strategy "ขั้นตอน" --save_steps 2000 --save_total_limit 5 --learning_rate 2e-5 --weight_decay 0. --อัตราส่วนวอร์มอัพ 0.03 --lr_scheduler_type "โคไซน์" --logging_steps 1
หากคุณพบข้อผิดพลาด OOM โปรดพิจารณาสิ่งนี้
การปรับแต่งโมเดล 7B อย่างละเอียดนั้นต้องใช้ VRAM ประมาณ 7 x 4 x 4 = 112 GB คำสั่งที่ให้ไว้ข้างต้นเปิดใช้งานการแบ่งส่วนพารามิเตอร์ ดังนั้นจึงไม่มีการจัดเก็บสำเนาโมเดลที่ซ้ำซ้อนบน GPU ใดๆ หากคุณต้องการลดพื้นที่หน่วยความจำเพิ่มเติม ต่อไปนี้คือตัวเลือกบางส่วน:
เปิด CPU offload สำหรับ FSDP ด้วย --fsdp "full_shard auto_wrap offload"
ซึ่งจะช่วยประหยัด VRAM โดยเสียค่าใช้จ่ายรันไทม์นานขึ้น
จากประสบการณ์ของเรา DeepSpeed Stage-3 (พร้อมออฟโหลด) ในบางครั้งอาจมีประสิทธิภาพของหน่วยความจำมากกว่า FSDP ที่มีออฟโหลด นี่คือตัวอย่างการใช้ DeepSpeed stage-3 กับ 4 GPU ที่มีทั้งพารามิเตอร์และออฟโหลดของเครื่องมือเพิ่มประสิทธิภาพ:
pip ติดตั้งตัวอย่าง deepspeedcd/alpaca/ torchrun --nproc_per_node=8 train_alpaca.py --model_name_or_path 'decapoda-การวิจัย/llama-7b-hf' --data_path tatsu-lab/alpaca --output_dir work_dir/ --num_train_epochs 3 --per_device_train_batch_size 2 --per_device_eval_batch_size 2 --gradient_accumulation_ขั้นตอน 8 --evalue_strategy "ไม่" --save_strategy "ขั้นตอน" --save_steps 2000 --save_total_limit 5 --learning_rate 2e-5 --weight_decay 0. --อัตราส่วนวอร์มอัพ 0.03 --deepspeed "สคริปต์/ds_config_zero3_auto.json"
LoRA ปรับแต่งส่วนอันดับต่ำของส่วนหัวของการสืบค้น คีย์ และค่าที่ฝัง ซึ่งสามารถลดขนาดหน่วยความจำทั้งหมดจาก 112GB เหลือประมาณ 7x4=28GB
ส่วนนี้สร้างผลลัพธ์ของ Stanford Alpaca โดยใช้การปรับอันดับต่ำ (LoRA)
เพื่อปรับแต่งอย่างประหยัดและมีประสิทธิภาพ เราใช้ PEFT ของ Hugging Face รวมถึงบิตแซนด์ไบต์ของ Tim Dettmers
ไฟล์นี้มีแอปพลิเคชัน PEFT ที่ตรงไปตรงมากับโมเดล LLaMA รวมถึงโค้ดบางส่วนที่เกี่ยวข้องกับการสร้างและโทเค็นทันที
หลาม train_alpaca_lora.py --model_name_or_path decapoda-research/llama-7b-hf --data_path tatsu-lab/alpaca --output_dir work_dir_lora/ --num_train_epochs 3 --per_device_train_batch_size 4 --per_device_eval_batch_size 4 --gradient_accumulation_ขั้นตอน 8 --evalue_strategy "ไม่" --save_strategy "ขั้นตอน" --save_steps 2000 --save_total_limit 5 --learning_rate 2e-5 --weight_decay 0. --อัตราส่วนวอร์มอัพ 0.03 --lr_scheduler_type "โคไซน์" --logging_steps 1
ไฟล์นี้อ่านโมเดลพื้นฐานจากฮับโมเดล Hugging Face และตุ้มน้ำหนัก LoRA จาก tloen/alpaca-lora-7b
และรันอินเทอร์เฟซ Gradio สำหรับการอนุมานในอินพุตที่ระบุ ผู้ใช้ควรถือว่านี่เป็นโค้ดตัวอย่างสำหรับการใช้โมเดล และแก้ไขตามความจำเป็น
ตัวอย่างการใช้งาน:
หลาม Generate_server.py --model_name_or_path decapoda-research/llama-7b-hf --lora_model_name_or_path tloen/alpaca-lora-7b
หากคุณมีหน่วยความจำไม่เพียงพอ คุณสามารถเปิดใช้งานการบีบอัดแบบ 8 บิตได้โดยการเพิ่ม --load-8bit
ลงในคำสั่งด้านบน วิธีนี้สามารถลดการใช้หน่วยความจำได้ประมาณครึ่งหนึ่งโดยคุณภาพของโมเดลจะลดลงเล็กน้อย มันเข้ากันได้กับ CPU, GPU และแบ็กเอนด์ Metal Alpaca-7B ที่มีการบีบอัด 8 บิตสามารถทำงานบน NVIDIA 3090/4080/T4/V100(16GB) GPU ตัวเดียว
หลาม Generate_server.py --model_name_or_path decapoda-research/llama-7b-hf --lora_model_name_or_path tloen/alpaca-lora-7b --load_8bit
จุดประสงค์ของเราคือทำให้ repo นี้ดียิ่งขึ้น หากคุณสนใจที่จะมีส่วนร่วม โปรดดูที่นี่ เพื่อดูคำแนะนำในการบริจาค
Openn-ChatGPT
เปิดตัวภายใต้ลิขสิทธิ์ Apache 2.0
เราขอขอบคุณผลงานของผู้ร่วมให้ข้อมูลโอเพ่นซอร์สจำนวนมาก โดยเฉพาะอย่างยิ่ง:
อัลปาก้า-LoRA
โลรา
อัลปาก้าสแตนฟอร์ด
กอดหน้า
ลามะ
วิคูน่า
โปรดอ้างอิง repo หากคุณใช้ข้อมูลหรือโค้ดใน repo นี้
@misc{open-chatgpt, author = {jianzhnie}, title = {Open-ChatGPT, a chatbot based on Llama model}, year = {2023}, publisher = {GitHub}, journal = {GitHub repository}, howpublished = {url{https://github.com/jianzhnie/open-chatgpt}}, }