บทนำ | การติดตั้ง | เริ่มต้น | เอกสารประกอบ | ชุมชน | ใบอนุญาต | อ้างอิงถึงคบไฟ
สำคัญ
อัปเดต 25 กันยายน 2024: torchtune รองรับรุ่น Llama 3.2 11B Vision , Llama 3.2 3B และ Llama 3.2 1B ! ลองใช้โดยทำตามคำแนะนำในการติดตั้งของเราที่นี่ จากนั้นเรียกใช้การกำหนดค่าข้อความใดๆ ที่นี่ หรือการกำหนดค่าการมองเห็นที่นี่
torchtune เป็นไลบรารี PyTorch สำหรับการเขียน การปรับแต่ง และการทดลองกับ LLM ได้อย่างง่ายดาย
torchtune ให้:
การใช้งาน PyTorch ของ LLM ยอดนิยมจากตระกูลโมเดล Llama, Gemma, Mistral, Phi และ Qwen
สูตรการฝึกอบรมที่สามารถแฮ็กได้สำหรับการปรับแต่งอย่างละเอียด LoRA, QLoRA, DPO, PPO, QAT, การกลั่นความรู้ และอื่นๆ
ประสิทธิภาพของหน่วยความจำที่พร้อมใช้งานทันที การปรับปรุงประสิทธิภาพ และการปรับขนาดด้วย PyTorch API ล่าสุด
การกำหนดค่า YAML เพื่อกำหนดค่าสูตรการฝึกอบรม การประเมิน ปริมาณ หรือการอนุมานได้อย่างง่ายดาย
การสนับสนุนในตัวสำหรับรูปแบบชุดข้อมูลยอดนิยมและเทมเพลตพร้อมท์มากมาย
ปัจจุบัน torchtune รองรับรุ่นต่อไปนี้
แบบอย่าง | ขนาด |
---|---|
Llama3.2-วิสัยทัศน์ | 11B [รุ่น, การกำหนดค่า] |
ลามะ3.2 | 1B, 3B [รุ่น, การกำหนดค่า] |
ลามะ3.1 | 8B, 70B, 405B [รุ่น, การกำหนดค่า] |
ลามะ3 | 8B, 70B [รุ่น, การกำหนดค่า] |
ลามะ2 | 7B, 13B, 70B [รุ่น, การกำหนดค่า] |
รหัส-Llama2 | 7B, 13B, 70B [รุ่น, การกำหนดค่า] |
มิสทรัล | 7B [รุ่น, การกำหนดค่า] |
เจมม่า | 2B, 7B [รุ่น, การกำหนดค่า] |
ไมโครซอฟต์ Phi3 | มินิ [รุ่น, การกำหนดค่า] |
คิวเวน2 | 0.5B, 1.5B, 7B [รุ่น, การกำหนดค่า] |
เราเพิ่มโมเดลใหม่ๆ อยู่เสมอ แต่อย่าลังเลที่จะแจ้งปัญหาหากมีโมเดลใหม่ที่คุณต้องการเห็นใน Torchtune
torchtune มีสูตรการปรับแต่งอย่างละเอียดต่อไปนี้สำหรับการฝึกบนอุปกรณ์ตั้งแต่หนึ่งเครื่องขึ้นไป
วิธีการปรับแบบละเอียด | อุปกรณ์ | สูตรอาหาร | ตัวอย่างการกำหนดค่า |
---|---|---|---|
การปรับแต่งแบบเต็มรูปแบบ | 1-8 | full_finetune_single_device full_finetune_distributed | Llama3.1 8B อุปกรณ์เดียว ลามะ 3.1 70B จัดจำหน่าย |
การปรับแต่ง LoRA | 1-8 | lora_finetune_single_device lora_finetune_distributed | Qwen2 0.5B อุปกรณ์เดียว เจมม่า 7B จัดจำหน่าย |
การปรับแต่ง QLoRA | 1-8 | lora_finetune_single_device lora_finetune_distributed | อุปกรณ์เดียว Phi3 Mini ลามะ 3.1 405B จัดจำหน่าย |
การปรับแต่ง DoRA/QDoRA | 1-8 | lora_finetune_single_device lora_finetune_distributed | Llama3 8B QDoRA อุปกรณ์เดียว Llama3 8B DoRA จัดจำหน่าย |
การฝึกอบรมการรับรู้เชิงปริมาณ | 4-8 | qat_distributed | ลามะ3 8B QAT |
การเพิ่มประสิทธิภาพการตั้งค่าโดยตรง | 1-8 | lora_dpo_single_device lora_dpo_distributed | Llama2 7B อุปกรณ์เดียว Llama2 7B แจกจ่าย |
การเพิ่มประสิทธิภาพนโยบายที่ใกล้เคียง | 1 | ppo_full_finetune_single_device | มิสทรัล 7B |
การกลั่นกรองความรู้ | 1 | ความรู้_การกลั่น_อุปกรณ์เดียว | คิวเวน2 1.5B -> 0.5B |
การกำหนดค่าข้างต้นเป็นเพียงตัวอย่างในการเริ่มต้นใช้งาน หากคุณเห็นโมเดลด้านบนไม่อยู่ในรายการที่นี่ แสดงว่าเรายังสนับสนุนโมเดลดังกล่าวอยู่ หากคุณไม่แน่ใจว่ามีบางอย่างรองรับหรือไม่ โปรดเปิดปัญหาใน repo
ด้านล่างนี้คือตัวอย่างข้อกำหนดด้านหน่วยความจำและความเร็วการฝึกสำหรับ Llama 3.1 รุ่นต่างๆ
บันทึก
เพื่อความสะดวกในการเปรียบเทียบ ตัวเลขด้านล่างนี้ทั้งหมดมีไว้สำหรับชุดข้อมูลขนาด 2 (ไม่มีการสะสมการไล่ระดับสี) ชุดข้อมูลที่บรรจุตามความยาวลำดับ 2048 และเปิดใช้งานการคอมไพล์คบเพลิง
หากคุณสนใจใช้งานบนฮาร์ดแวร์ที่แตกต่างกันหรือรุ่นที่แตกต่างกัน โปรดดูเอกสารของเราเกี่ยวกับการปรับแต่งหน่วยความจำให้เหมาะสมที่นี่ เพื่อค้นหาการตั้งค่าที่เหมาะสมสำหรับคุณ
แบบอย่าง | วิธีการปรับแบบละเอียด | รันได้บน | หน่วยความจำสูงสุดต่อ GPU | โทเค็น/วินาที * |
---|---|---|---|---|
ลามะ 3.1 8B | วิจิตรบรรจงเต็มที่ | 1x4090 | 18.9 กิ๊บ | 1650 |
ลามะ 3.1 8B | วิจิตรบรรจงเต็มที่ | 1x A6000 | 37.4 กิ๊บ | 2579 |
ลามะ 3.1 8B | โลรา | 1x4090 | 16.2 กิ๊บ | 3083 |
ลามะ 3.1 8B | โลรา | 1x A6000 | 30.3 กิ๊บ | 4699 |
ลามะ 3.1 8B | คิวลอรา | 1x4090 | 7.4 กิ๊บ | 2413 |
ลามะ 3.1 70B | วิจิตรบรรจงเต็มที่ | 8x เอ100 | 13.9 กิ๊บ ** | 1568 |
ลามะ 3.1 70B | โลรา | 8x เอ100 | 27.6 กิ๊บ | 3497 |
ลามะ 3.1 405B | คิวลอรา | 8x เอ100 | 44.8GB | 653 |
*= วัดจากช่วงการฝึกอบรมเต็มรูปแบบหนึ่งช่วง
**= ใช้ CPU offload พร้อมตัวเพิ่มประสิทธิภาพแบบหลอมรวม
torchtune ได้รับการทดสอบด้วย PyTorch ที่เสถียรล่าสุด รวมถึงเวอร์ชันตัวอย่างทุกคืน torchtune ใช้ประโยชน์จาก torchvision เพื่อปรับแต่ง LLM แบบหลายรูปแบบ และ torchao สำหรับเทคนิคการหาปริมาณล่าสุด คุณควรติดตั้งสิ่งเหล่านี้ด้วย
# ติดตั้ง PyTorch ที่เสถียร, torchvision, torchao ที่เสถียร releasespip ติดตั้ง torch torchvision torchao pip ติดตั้ง torchtune
# ติดตั้ง PyTorch, torchvision, torchao nightliespip install --pre --upgrade torch torchvision torchao --index-url https://download.pytorch.org/whl/nightly/cu121 # ตัวเลือกเต็มคือ cpu/cu118/cu121/cu124pip ติดตั้ง --pre --upgrade torchtune --extra-index-url https://download.pytorch.org/whl/nightly/cpu
คุณยังสามารถตรวจสอบเอกสารการติดตั้งของเราสำหรับข้อมูลเพิ่มเติม รวมถึงการติดตั้ง Torchtune จากแหล่งที่มา
เพื่อยืนยันว่ามีการติดตั้งแพ็คเกจอย่างถูกต้อง คุณสามารถรันคำสั่งต่อไปนี้:
ปรับแต่ง --help
และควรเห็นผลลัพธ์ต่อไปนี้:
การใช้งาน: ปรับแต่ง [-h] {ls,cp,ดาวน์โหลด,รัน,ตรวจสอบ} ... ยินดีต้อนรับสู่ตัวเลือก torchtune CLI!: -h, --help แสดงข้อความช่วยเหลือนี้และออก...
หากต้องการเริ่มต้นใช้งาน Torchtune โปรดดูบทช่วยสอน Finetune แรกของเรา บทช่วยสอนเวิร์กโฟลว์แบบครบวงจรของเราจะแสดงวิธีประเมิน วัดปริมาณ และดำเนินการอนุมานด้วยแบบจำลอง Llama ส่วนที่เหลือของส่วนนี้จะให้ภาพรวมโดยย่อของขั้นตอนเหล่านี้ใน Llama3.1
ปฏิบัติตามคำแนะนำบนพื้นที่เก็บข้อมูล meta-llama
อย่างเป็นทางการเพื่อให้แน่ใจว่าคุณสามารถเข้าถึงตุ้มน้ำหนักแบบจำลอง Llama อย่างเป็นทางการได้ เมื่อคุณยืนยันการเข้าถึงแล้ว คุณสามารถเรียกใช้คำสั่งต่อไปนี้เพื่อดาวน์โหลดตุ้มน้ำหนักลงในเครื่องของคุณ นอกจากนี้ยังจะดาวน์โหลดโมเดลโทเค็นไนเซอร์และคู่มือการใช้งานที่รับผิดชอบด้วย
หากต้องการดาวน์โหลด Llama3.1 คุณสามารถเรียกใช้:
ปรับแต่งการดาวน์โหลด meta-llama/Meta-Llama-3.1-8B-Instruct --output-dir /tmp/Meta-Llama-3.1-8B-Instruct --ละเว้นรูปแบบ "ต้นฉบับ/consolidated.00.pth" --hf-token
เคล็ดลับ
ตั้งค่าตัวแปรสภาพแวดล้อมของคุณ HF_TOKEN
หรือส่ง --hf-token
ไปยังคำสั่งเพื่อตรวจสอบการเข้าถึงของคุณ คุณสามารถค้นหาโทเค็นของคุณได้ที่ https://huggingface.co/settings/tokens
คุณสามารถปรับแต่ง Llama3.1 8B ด้วย LoRA บน GPU ตัวเดียวได้โดยใช้คำสั่งต่อไปนี้:
ปรับแต่งการทำงาน lora_finetune_single_device --config llama3_1/8B_lora_single_device
สำหรับการฝึกอบรมแบบกระจาย ให้ปรับแต่ง CLI รวมกับ torchrun หากต้องการปรับแต่ง Llama3.1 8B อย่างเต็มรูปแบบบน GPU สองตัว:
ปรับแต่งการทำงาน --nproc_per_node 2 full_finetune_distributed --config llama3_1/8B_full
เคล็ดลับ
ตรวจสอบให้แน่ใจว่าได้วางคำสั่ง torchrun ก่อน ข้อกำหนดจำเพาะของสูตร ข้อโต้แย้งของ CLI ใดๆ หลังจากนั้นจะแทนที่การกำหนดค่า และไม่ส่งผลกระทบต่อการฝึกอบรมแบบกระจาย
คุณสามารถแก้ไขการกำหนดค่าได้สองวิธี:
แทนที่การกำหนดค่า
คุณสามารถเขียนทับฟิลด์การกำหนดค่าได้โดยตรงจากบรรทัดคำสั่ง:
ปรับแต่งการทำงาน lora_finetune_single_device --config llama2/7B_lora_single_device ชุด_ขนาด=8 Enable_activation_checkpointing=จริง max_steps_per_epoch=128
อัปเดตสำเนาในเครื่อง
คุณยังสามารถคัดลอกการกำหนดค่าไปยังไดเร็กทอรีในเครื่องของคุณและแก้ไขเนื้อหาได้โดยตรง:
ปรับ cp llama3_1/8B_full ./my_custom_config.yaml คัดลอกไปที่ ./my_custom_config.yaml
จากนั้น คุณสามารถเรียกใช้สูตรอาหารที่คุณกำหนดเองได้โดยกำหนดคำสั่ง tune run
ไปยังไฟล์ในเครื่องของคุณ:
ปรับแต่งการทำงาน full_finetune_distributed --config ./my_custom_config.yaml
ตรวจสอบ tune --help
สำหรับคำสั่งและตัวเลือก CLI ที่เป็นไปได้ทั้งหมด สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการใช้และการอัปเดตการกำหนดค่า โปรดดูที่การเจาะลึกการกำหนดค่าของเรา
torchtune รองรับการปรับแต่งชุดข้อมูลที่หลากหลาย รวมถึงรูปแบบคำสั่ง รูปแบบการแชท ชุดข้อมูลการตั้งค่า และอื่นๆ หากคุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับวิธีการใช้ส่วนประกอบเหล่านี้เพื่อปรับแต่งชุดข้อมูลที่คุณกำหนดเอง โปรดดูลิงก์ที่ให้ไว้พร้อมกับเอกสาร API ของเรา
torchtune มุ่งเน้นไปที่การบูรณาการกับเครื่องมือและไลบรารียอดนิยมจากระบบนิเวศ นี่เป็นเพียงตัวอย่างบางส่วน และยังมีอีกมากที่อยู่ระหว่างการพัฒนา:
การกอด Face Hub สำหรับการเข้าถึงตุ้มน้ำหนักของโมเดล
LM Eval Harness ของ EleutherAI สำหรับการประเมินโมเดลที่ผ่านการฝึกอบรม
ชุดข้อมูล Hugging Face สำหรับการเข้าถึงชุดข้อมูลการฝึกอบรมและการประเมินผล
PyTorch FSDP2 สำหรับการฝึกอบรมแบบกระจาย
torchao สำหรับประเภท dtype ที่มีความแม่นยำต่ำกว่าและเทคนิคการหาปริมาณหลังการฝึกอบรม
น้ำหนักและอคติสำหรับการบันทึกตัวชี้วัดและจุดตรวจ และติดตามความคืบหน้าของการฝึกอบรม
ดาวหางเป็นอีกทางเลือกหนึ่งสำหรับการบันทึก
ExecuteTorch สำหรับการอนุมานบนอุปกรณ์โดยใช้โมเดลที่ได้รับการปรับแต่ง
บิตแซนด์ไบต์สำหรับเครื่องมือเพิ่มประสิทธิภาพหน่วยความจำเหลือน้อยสำหรับสูตรอุปกรณ์เดียวของเรา
PEFT สำหรับการปรับแต่งหรือการอนุมานอย่างต่อเนื่องด้วยโมเดล Torchtune ในระบบนิเวศ Hugging Face
เราให้ความสำคัญกับชุมชนของเราและการสนับสนุนจากผู้ใช้ที่ยอดเยี่ยมของเรา เราจะใช้ส่วนนี้เพื่อกล่าวถึงการมีส่วนร่วมเหล่านี้บางส่วน หากคุณต้องการช่วยเหลือเช่นกัน โปรดดูคู่มือการมีส่วนร่วม
@SalmanMohammadi สำหรับการเพิ่มสูตรแบบ end-to-end ที่ครอบคลุมสำหรับการปรับแต่งการเรียนรู้แบบเสริมแรงจากผลตอบรับของมนุษย์ (RLHF) ด้วย PPO เพื่อปรับแต่งคบเพลิง
@fyabc สำหรับการเพิ่มโมเดล Qwen2, tokenizer และการรวมสูตรอาหารเข้ากับ torchtune
@solitude-alive สำหรับการเพิ่มโมเดล Gemma 2B ไปยัง torchtune รวมถึงการเปลี่ยนแปลงสูตร การตรวจสอบตัวเลขของโมเดล และความถูกต้องของสูตร
@yechenzhi สำหรับการเพิ่ม Direct Preference Optimization (DPO) ให้กับ torchtune รวมถึงสูตรและการกำหนดค่าพร้อมกับการตรวจสอบความถูกต้อง
รหัส Llama2 ในพื้นที่เก็บข้อมูลนี้ได้รับแรงบันดาลใจจากรหัส Llama2 ดั้งเดิม
เราอยากจะยกย่อง EleutherAI, Hugging Face และ Weights & Biases อย่างมาก สำหรับการเป็นผู้ร่วมงานที่ยอดเยี่ยม และสำหรับการทำงานร่วมกับเราในการผสานรวมบางส่วนเหล่านี้ภายใน Torchtune
เรายังต้องการยกย่องห้องสมุดและเครื่องมือที่ยอดเยี่ยมจากระบบนิเวศ:
gpt-fast สำหรับเทคนิคการอนุมาน LLM ที่มีประสิทธิภาพ ซึ่งเราได้นำมาใช้ทันที
สูตรลามะสำหรับการขึ้นเครื่องในชุมชน llama2
บิตแซนด์ไบต์สำหรับการนำหน่วยความจำและเทคนิคตามประสิทธิภาพมาสู่ระบบนิเวศของ PyTorch
@winglian และ axolotl สำหรับการตอบรับล่วงหน้าและการระดมความคิดเกี่ยวกับการออกแบบและชุดคุณสมบัติของ torchtune
lit-gpt เพื่อผลักดันชุมชนการปรับแต่ง LLM ไปข้างหน้า
HF TRL สำหรับทำให้ชุมชน PyTorch สามารถเข้าถึงการสร้างแบบจำลองรางวัลได้มากขึ้น
torchtune เปิดตัวภายใต้ลิขสิทธิ์ BSD 3 อย่างไรก็ตาม คุณอาจมีภาระผูกพันทางกฎหมายอื่นๆ ที่ควบคุมการใช้เนื้อหาอื่นๆ ของคุณ เช่น ข้อกำหนดในการให้บริการสำหรับรุ่นของบุคคลที่สาม
หากคุณพบว่าไลบรารี Torchtune มีประโยชน์ โปรดอ้างอิงในงานของคุณตามด้านล่างนี้
@software{torchtune, title = {torchtune: PyTorch's finetuning Library}, author = {ผู้ดูแล Torchtune และผู้สนับสนุน}, url = {https//github.com/pytorch/torchtune}, ใบอนุญาต = {BSD-3-Clause}, เดือน = เม.ย. ปี = {2024}}