Mistral-finetune - ปรับจูนโมเดล Mistral แบบ fine-tuning
(github.com/mistralai)mistral-finetuneคือโค้ดเบสขนาดเล็กสำหรับทำ fine-tuning โมเดล Mistral ให้มี ประสิทธิภาพด้านหน่วยความจำ และให้ผลลัพธ์ที่ดี โดยปัจจุบันรีโพซิทอรีนี้ถูกเก็บถาวรแล้วและไม่ได้รับการบำรุงรักษาเชิงรุกอีกต่อไป- วิธีฝึกอิงตาม LoRA ซึ่งตรึงค่าน้ำหนักส่วนใหญ่ไว้ และ ฝึกเพิ่มเพียง 1~2% ในรูปของการรบกวนเมทริกซ์อันดับต่ำ
- เพื่อประสิทธิภาพสูงสุด แนะนำให้ใช้ A100 หรือ H100 GPU และโค้ดถูกปรับให้เหมาะกับการฝึกแบบหลาย GPU บนโหนดเดียว แต่โมเดลขนาดเล็กอย่าง 7B ก็สามารถใช้ GPU เดียวได้
- โมเดลที่รองรับมี 7B, Mixtral 8x7B, Mixtral 8x22B, Mistral-Nemo 12B และ Mistral Large v2 123B Instruct โดย Mistral-Nemo และ Large v2 ต่างมีข้อจำกัดด้านความยาวลำดับและอัตราการเรียนรู้ตามลำดับ
- ข้อมูลต้องอยู่ในรูปแบบ
jsonlและเป็นไปตามสคีมาที่เข้มงวด โดยขั้นตอนตรวจสอบรูปแบบและ ประเมินเวลาเทรน ด้วยutils.validate_dataก่อนเริ่มฝึกถือว่าสำคัญมาก
สถานะและเป้าหมายของโปรเจกต์
- รีโพซิทอรี
mistral-finetuneอยู่ในสถานะ Archived และไม่ได้รับการบำรุงรักษาเชิงรุกอีกต่อไป - หากมีความต้องการจากชุมชน หรือเห็นว่าสามารถเพิ่มคุณค่าให้ระบบนิเวศของการทำ fine-tuning ได้ ก็อาจมีไลบรารีใหม่หรืออัปเดตครั้งใหญ่ในอนาคต
- เป้าหมายคือการมอบ จุดเริ่มต้นที่เรียบง่ายและมีแนวทางชัดเจน สำหรับการทำ fine-tuning โมเดล Mistral
- โค้ดเบสนี้มีแนวทางค่อนข้างชัดเจนโดยเฉพาะเรื่องรูปแบบข้อมูล และไม่ได้ตั้งเป้าเป็นเครื่องมืออเนกประสงค์ที่ครอบคลุมหลายสถาปัตยกรรมโมเดลหรือฮาร์ดแวร์หลายประเภท
- หากต้องการแนวทางที่ทั่วไปกว่า สามารถดูโปรเจกต์อย่าง torchtune ได้
วิธีทำ fine-tuning และคำแนะนำด้านฮาร์ดแวร์
mistral-finetuneอิงตาม LoRA- ค่าน้ำหนักของโมเดลส่วนใหญ่จะถูกตรึงไว้
- จะ ฝึกเพิ่มเพียง 1~2% ของค่าน้ำหนักเพิ่มเติมในรูปของการรบกวนเมทริกซ์อันดับต่ำ
- เพื่อประสิทธิภาพสูงสุด แนะนำให้ใช้ A100 หรือ H100 GPU
- โค้ดถูกปรับให้เหมาะกับสภาพแวดล้อมการฝึกแบบ หลาย GPU บนโหนดเดียว
- โมเดลขนาดเล็กอย่าง 7B ใช้ GPU เดียวก็เพียงพอ
อัปเดตล่าสุดของโมเดลที่รองรับ
- ตั้งแต่ 13 สิงหาคม 2024 Mistral Large v2 รองรับการใช้งานกับ
mistral-finetune- ต้องดาวน์โหลดเช็กพอยต์ 123B Instruct และตั้งค่า
model_id_or_pathให้ชี้ไปยังไดเรกทอรีเช็กพอยต์นั้น - เนื่องจากโมเดลมีขนาดใหญ่ จึงต้องใช้หน่วยความจำมากกว่ามากในการทำ fine-tuning
- ขณะนี้ต้องตั้ง
seq_lenเป็น ไม่เกิน 8192 - แนะนำให้ใช้อัตราการเรียนรู้ต่ำกว่าโมเดลอื่น โดยในกรณีส่วนใหญ่
lr=1e-6น่าจะทำงานได้ดี
- ต้องดาวน์โหลดเช็กพอยต์ 123B Instruct และตั้งค่า
- ตั้งแต่ 19 กรกฎาคม 2024 Mistral Nemo รองรับการใช้งานกับ
mistral-finetune- ต้องดาวน์โหลดโมเดล 12B Base หรือ Instruct และตั้งค่า
model_id_or_pathให้ชี้ไปยังไดเรกทอรีเช็กพอยต์ - ต้องใช้
mistral-commonเวอร์ชันที่รองรับ Tekkenizer โดยติดตั้งเวอร์ชัน>=1.3.1ด้วยpip install --upgrade mistral-common - เนื่องจากขนาด vocabulary ใหญ่ขึ้น ความต้องการหน่วยความจำสูงสุดของ CE loss จึงเพิ่มขึ้น ทำให้ตอนนี้ต้องใช้หน่วยความจำมากขึ้น
- ขณะนี้ต้องตั้ง
seq_lenเป็น ไม่เกิน 16384 - แนะนำให้ใช้ไฮเปอร์พารามิเตอร์แบบเดียวกับ 7B v3
- ต้องดาวน์โหลดโมเดล 12B Base หรือ Instruct และตั้งค่า
การติดตั้งและดาวน์โหลดโมเดล
- ขั้นตอนเริ่มต้นประกอบด้วยการโคลนรีโพซิทอรีและติดตั้ง dependency
git clone https://github.com/mistralai/mistral-finetune.gitpip install -r requirements.txt
- แนะนำให้ทำ fine-tuning กับโมเดล Mistral ทางการ และ README มีลิงก์ดาวน์โหลดกับ checksum ของโมเดลดังต่อไปนี้
- 7B Base:
0663b293810d7571dad25dae2f2a5806 - 7B Instruct v3:
80b71fcb6416085bcb4efad86dfb4d52 - 8x7B Base: ลิงก์ Hugging Face
- 8x7B Instruct:
8e2d3930145dc43d3084396f49d38a3f - 8x22 Instruct:
471a02a6902706a2f1e44a693813855b - 8x22B Base:
a2fa75117174f87d1197e3a4eb50371a - 12B Instruct (Mistral-Nemo):
296fbdf911cb88e6f0be74cd04827fe7 - 12 Base (Mistral-Nemo):
c5d079ac4b55fc1ae35f51f0a3c0eb83 - 123B Instruct (Large v2):
fc602155f9e39151fba81fcaab2fa7c4
- 7B Base:
- 8x7B Base V1 และ 8x7B Instruct V1 ต้องใช้ v3 tokenizer และขยาย vocabulary เป็น 32768 ก่อนทำ fine-tuning
- ต้องระบุพาธโฟลเดอร์ของโมเดลที่ดาวน์โหลดมาเป็นพาธแบบสัมบูรณ์ใน
model_id_or_pathของ YAML สำหรับการฝึก
ข้อกำหนดรูปแบบข้อมูล
- ไฟล์ข้อมูลทั้งหมดต้องอยู่ในรูปแบบ jsonl
- ข้อมูล pretraining จะเก็บข้อความธรรมดาไว้ในคีย์
"text" - ข้อมูล instruction จะเก็บรายการบทสนทนาไว้ในคีย์
"messages"- แต่ละรายการต้องมีคีย์
"content"และ"role" "role"ต้องเป็นหนึ่งใน"user","assistant","system"- จะคำนวณ loss เฉพาะเมื่อ
"role" == "assistant" - สามารถระบุ
"weight": 0ในข้อความ assistant เพื่อยกเว้นข้อความนั้นออกจากการฝึกได้
- แต่ละรายการต้องมีคีย์
- ข้อมูล function calling ก็เก็บรายการบทสนทนาไว้ในคีย์
"messages"- แต่ละรายการต้องมีคีย์
"role"และ"content"หรือ"tool_calls" "role"ต้องเป็นหนึ่งใน"user","assistant","system","tool"- จะคำนวณ loss เฉพาะเมื่อ
"role" == "assistant" "id"ของ"tool_calls"และ"tool_call_id"ต้องเป็นสตริงสุ่มความยาว 9 ตัวอักษรพอดี- README แนะนำให้สร้างค่าเหล่านี้อัตโนมัติในสคริปต์เตรียมข้อมูล
- แต่ละรายการต้องมีคีย์
การตรวจสอบข้อมูลและเวิร์กโฟลว์ตัวอย่าง
- ก่อนเริ่มฝึก ควรใช้ utils.validate_data เพื่อตรวจสอบรูปแบบข้อมูลและประเมินเวลาเทรน
- ตัวอย่าง instruction ใช้บางส่วนของ Ultachat_200k
- โหลดข้อมูล parquet ด้วย Pandas
- แบ่งเป็น train 95% และ eval 5%
- บันทึกเป็น
jsonl - ระบุพาธใน
data.instruct_dataและdata.eval_instruct_dataของexample/7B.yaml
- ระหว่างการตรวจสอบอาจพบปัญหาที่บางบทสนทนาจบด้วยบทบาท
user- เนื่องจากฝึกเฉพาะข้อความ assistant ข้อความ
userสุดท้ายจึงเป็นรายการที่ไม่จำเป็นต้องประมวลผล - สามารถแก้ข้อมูลได้ด้วย utils.reformat_data.py
- เนื่องจากฝึกเฉพาะข้อความ assistant ข้อความ
- หลังแก้ไขแล้ว เมื่อตรวจสอบอีกครั้งจะมีการแสดงสรุป เช่น จำนวนโทเคนของข้อมูล จำนวนโทเคนที่ใช้ฝึก จำนวน epoch,
max_stepsและเวลาโดยประมาณ - ในตัวอย่าง README ค่า
max_steps=500จะวนผ่านชุดข้อมูลประมาณ 5 รอบ และใช้เวลาประมาณ 30 นาทีบนคลัสเตอร์ 8xH100 โดยแนะนำให้ตั้งmax_steps=300
ตัวอย่างการทำ fine-tuning สำหรับ function calling
- ตัวอย่าง function calling ใช้ Glaive function calling dataset
- โหลดข้อมูลด้วย Pandas แล้วแบ่งเป็น train 95% และ eval 5% ก่อนบันทึกเป็น
jsonl - ชุดข้อมูลต้นฉบับไม่ได้อยู่ในรูปแบบ function calling ที่ต้องการ จึงต้องรีฟอร์แมต
- ต้องเปลี่ยน
"from"เป็น"user" - ต้องลบอักขระ
"\n"ที่ไม่จำเป็นออก
- ต้องเปลี่ยน
- หากใช้ utils.reformat_data_glaive.py จะช่วยแปลงตัวอย่างส่วนใหญ่ให้อยู่ในรูปแบบที่ถูกต้องได้
- เนื่องจากเป็นไปไม่ได้ที่จะเขียนสคริปต์รีฟอร์แมตชุดเดียวให้ใช้ได้กับทุกชุดข้อมูล จึงอาจต้องมีสคริปต์รีฟอร์แมตแยกสำหรับชุดข้อมูลที่ไม่เป็นไปตามรูปแบบที่กำหนด
- ใช้
utils.validate_data --create_correctedเพื่อลบข้อผิดพลาดที่เหลือและสร้างชุดข้อมูล.corrected
การรันเทรนและตัวอย่างผลลัพธ์
- หลังตรวจสอบข้อมูลแล้ว สามารถเริ่มฝึกได้
- เพื่อให้ฝึกได้เร็วขึ้น แนะนำให้ตั้ง
max_stepsเป็น 300 - ต้องตั้ง
run_dirเป็นโฟลเดอร์สำหรับการทดลอง และสามารถระบุwandb.projectเพิ่มเติมเพื่อใช้การล็อกของ Weights & Biases ได้ - การรันเทรนใช้
torchrunโดยต้องตั้ง--nproc-per-nodeให้เท่ากับจำนวน GPU ที่ใช้งานได้ - การฝึก UltraChat ใช้เวลาประมาณ 30 นาที บนโหนด 8xH100 และค่าน้ำหนักที่ได้อาจทำคะแนน MT Bench ได้ราว 6.3
- การฝึก Glaive ใช้เวลาประมาณ 1 ชั่วโมง บนโหนด 8xH100 และมีการระบุว่าค่าน้ำหนักที่ได้ทำงานกับ function calling ได้ดี
รายการหลักของการตั้งค่าฝึก
model_id_or_path: โมเดล pretrain หรือพาธไดเรกทอรีโมเดลในเครื่องที่จะใช้เริ่มการฝึกrun_dir: ไดเรกทอรีสำหรับเก็บเช็กพอยต์และเมตริกseq_len: ความยาวลำดับสำหรับการฝึก โดยตัวอย่างจะถูกแพ็กให้พอดีกับความยาวseq_lenเพื่อประสิทธิภาพbatch_size: จำนวนตัวอย่างฝึกต่อ GPU- ขนาดแบตช์โทเคนที่มีผลจริงทั้งหมดคือ
num_gpus x batch_size x seq_len
- ขนาดแบตช์โทเคนที่มีผลจริงทั้งหมดคือ
max_steps: จำนวนรอบการฝึกทั้งหมด- จำนวนโทเคนรวมที่เห็นระหว่างการฝึกคือ
max_steps x num_gpus x batch_size x seq_len
- จำนวนโทเคนรวมที่เห็นระหว่างการฝึกคือ
optim.lr: อัตราการเรียนรู้เริ่มต้นของ optimizeroptim.weight_decay: weight decay โดย README แนะนำให้ คงไว้ที่ 0.1optim.pct_start: สัดส่วนของช่วง warm-up ใน PyTorchOneCycleLRlora.rank: ขนาดของ LoRA adapter โดยแนะนำ ไม่เกิน 64seed: ค่า seed ของตัวเลขสุ่มเพื่อให้การเริ่มต้น การสลับลำดับข้อมูล และการสุ่มตัวอย่างทำซ้ำได้data.instruct_data: พาธข้อมูลฝึกแบบ instruction- ระบุได้ทั้งไฟล์
jsonlเดี่ยว, ไดเรกทอรีjsonlหรือหลายแหล่งข้อมูลที่มีการถ่วงน้ำหนัก
- ระบุได้ทั้งไฟล์
data.data: พาธข้อมูล pretraining เพิ่มเติมแบบเลือกใช้data.eval_instruct_data: พาธข้อมูล instruction สำหรับประเมินแบบเลือกใช้eval_freq,no_eval,ckpt_freq: ใช้ควบคุมรอบการประเมิน การประเมินระหว่างทาง และการบันทึกเช็กพอยต์save_adapters: กำหนดว่าจะบันทึกเฉพาะ LoRA checkpoint หรือจะรวม LoRA เข้ากับโมเดลฐานแล้วบันทึกเป็นโมเดลเต็มsave_adapters=Falseต้องการหน่วยความจำ CPU และ GPU เพียงพอสำหรับการบันทึกโมเดลเต็มในโปรเซสเดียว ซึ่งโดยทั่วไปทำได้กับโมเดล 7B เท่านั้น
การอนุมานผลและ Weights & Biases
- แนะนำให้ใช้ mistral-inference สำหรับการอนุมานผลจากโมเดลที่ฝึกแล้ว
- ติดตั้งได้ด้วย
pip install mistral_inference - เมื่อรัน
mistral-chatสามารถใช้ค่าน้ำหนัก LoRA ได้โดยระบุพาธlora.safetensorsที่บันทึกไว้ใน--lora_path - มีการรองรับ Weights and Biases เพื่อมอนิเตอร์เมตริกและการทดลองระหว่างฝึก
- ติดตั้งด้วย
pip install wandb - แนะนำให้ส่ง API key ผ่านตัวแปรสภาพแวดล้อม
WANDB_API_KEY - ด้วยเหตุผลด้านความปลอดภัย จะไม่อ่าน API key จากการตั้งค่า YAML
- loss ระหว่างฝึก, eval loss, learning rate และค่าอื่น ๆ จะถูกบันทึกและแสดงผลในแดชบอร์ดโปรเจกต์ wandb
- ติดตั้งด้วย
- วิธีใช้งานเพิ่มเติมดูได้จาก Weights and Biases documentation
การขยายโมเดลและ FAQ
- สามารถทำ fine-tuning ได้เฉพาะโมเดล Mistral ที่เข้ากันได้กับ v3 tokenizer เท่านั้น
- โมเดลที่รองรับต้องมีขนาด vocabulary เป็น 32768 ไม่ใช่ 32000
- โมเดลรุ่นเก่าที่มี vocabulary 32000 สามารถขยายเป็น 32768 ได้ด้วย
utils.extend_model_vocab - การทำ fine-tuning โมเดล MoE มีความแปรปรวนของประสิทธิภาพสูงกว่า
- มีการแนะนำให้รัน fine-tuning แบบ MoE เดิมหลายครั้งด้วย seed ที่ต่างกัน แล้วเลือกผลลัพธ์ที่มีประสิทธิภาพดีที่สุด
- ไม่พบความแปรปรวนสูงแบบนี้ในโมเดล dense
- สามารถตรวจสอบจำนวนโทเคนที่ใช้ฝึกได้โดยป้อนไฟล์ YAML สำหรับการฝึกให้กับ utils.validate_data.py
- หากเกิดข้อผิดพลาด CUDA out-of-memory สามารถลดขนาดแบตช์ต่อ GPU ได้
- ขนาดแบตช์คือ
seq_len x batch_size - มีการแนะนำให้ตั้ง
batch_sizeเป็น 1 และลดseq_len
- ขนาดแบตช์คือ
- ไลบรารีนี้เผยแพร่ภายใต้ Apache 2.0 License
- ห้ามใช้ไลบรารีนี้หรือโมเดลในลักษณะที่ละเมิด ใช้ประโยชน์จาก หรือฝ่าฝืนสิทธิใด ๆ รวมถึงทรัพย์สินทางปัญญาของบุคคลที่สาม
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
ในเมื่อโมเดลพัฒนาเร็วขนาดนี้ การ fine-tune ยังมีคุณค่าอยู่ไหม? อยากรู้กรณีใช้งานจริง
ตัวอย่างเช่น Bloomberg เคยฝึก LLM ระดับ GPT-3.5 ด้วยข้อมูลการเงินเมื่อปีที่แล้ว แต่ไม่นานหลังจากนั้น GPT-4-8k ก็ทำผลงานเหนือกว่าแทบทุกงานด้านการเงิน
สุดท้ายเราจึงหันไปโฟกัสที่ ข้อมูลประเมินผล คุณภาพสูง และสถาปัตยกรรมที่ทำให้สลับไปใช้โมเดลใหม่ได้ง่าย
LLM ไม่เคยเห็นคำอธิบายประกอบแบบนี้มาก่อน และ LLM ภาษาที่ไม่ใช่อังกฤษก็ไม่ใช่ลำดับความสำคัญสูงสุดของบริษัทต่าง ๆ อีกทั้งด้วยเหตุผลด้านความเป็นส่วนตัวของข้อมูล จึงใช้ได้เฉพาะโมเดลแบบออฟไลน์เป็นหลักเท่านั้น
ในสถานการณ์แบบนี้ การ fine-tune โมเดลภาษาทั่วไปจึงเหมาะมาก
ถ้า fine-tune ด้วยข้อความที่จัดรูปแบบไว้แล้ว โมเดลจะสร้างรูปแบบนั้นโดยอัตโนมัติ ทำให้ประหยัดโทเค็นจำนวนมากที่ต้องใช้เพื่ออธิบายรูปแบบเอาต์พุตในทุกพรอมป์ต์
อย่างไรก็ตาม การ fine-tune ช่วยลดช่องว่างระหว่างสองอย่างนี้ได้พอสมควร
แม้จะเป็นขอบเขตแคบ ๆ แต่งานเขียนโปรแกรมส่วนใหญ่ก็เป็นแบบนั้นเช่นกัน หากเป้าหมายคือทำให้ LLM ทั่วไปเอนเอียงไปทางข้อมูลของตัวเองมากขึ้น การ fine-tune อาจไม่ค่อยเกี่ยวข้องนัก
แต่ถ้ากำลังพยายามแก้ปัญหาที่เฉพาะเจาะจงมากแต่ก็คลุมเครือ และ LLM ช่วยแก้ได้เพียงบางส่วน การ fine-tune ก็น่าจะเป็นทางเลือกที่ดีที่สุด
ถ้าแอปมีฟังก์ชันกำหนดเองจำนวนมากที่โต้ตอบกับเครื่องมือ คุณอาจเลือก fine-tune แทนการใช้โทเค็นบริบท
ถ้าจะทำสิ่งนี้ต้องใช้ GPU แบบไหน? มีแล็ปท็อป 3060 Ti, i9, RAM 16GB
ไม่มีโควตา AWS หรือ GCP และเคยได้ยินเรื่อง Paperspace อยู่บ้าง แต่ในโปรเจกต์ลูกค้าที่กำลังทำอยู่มีแผนจะใช้โมเดล Mistral บางส่วน เลยอยากเริ่ม fine-tune Mistral ให้เร็วที่สุด
GPU เกมมิงสามารถปล่อยความร้อน 300W ได้สบาย ๆ แต่ถ้า GPU แล็ปท็อปทำแบบนั้นคงละลาย และน่าจะถูกจำกัดไว้ราว ๆ 100W
การระบายความร้อนแปรผันโดยตรงกับความเร็ว
นอกจากนี้เดสก์ท็อปยังอัปเกรดเป็น GPU ที่เร็วขึ้นหรือใช้หลาย GPU ได้ด้วย
แต่โดยเฉพาะการจัดชุดหลาย GPU นั้นเสียงดังและปล่อยความร้อนมากพอจะทำให้ห้องหนึ่งร้อนขึ้นได้อย่างรวดเร็ว
ถ้าในอีกไม่กี่ปีข้างหน้าคุณไม่ได้รัน GPU แบบเต็มโหลดเกิน 10% ของเวลา คลาวด์ก็น่าจะถูกกว่า
เขารวบรวม ข้อกำหนดฮาร์ดแวร์ ตามแต่ละโมเดลไว้ และสามารถเลือก VRAM กับหน่วยความจำระบบเพื่อกรองโมเดลที่ใช้งานได้
บริษัทของเรา fine-tune Mistral และ Llama 3 ด้วย RTX4000 ที่นั่นมาแล้ว
ค่อนข้างมีข้อจำกัดเล็กน้อยเพราะมี RAM แค่ 20GB แต่สำหรับจำนวนโทเค็นอินพุตที่มากขึ้น การลดระดับการทำ quantization ก็ช่วยได้
ตอนนี้มีให้เช่าเป็นรายชั่วโมงด้วย
ตอนนี้บริษัทใช้อยู่ และได้ผลลัพธ์ค่อนข้างดี
น่าสนใจมากว่าในแต่ละกรณีใช้งาน LLM ที่พบบ่อย เครื่องมือไหนจะกลายเป็น มาตรฐานโดยพฤตินัย
อีโคซิสเต็มแตกกระจายมากจนรู้สึกว่าเครื่องมือส่วนใหญ่ไม่เคยได้ยินชื่อด้วยซ้ำ
ไม่กี่วันก่อนเห็น Olive ของ Microsoft ซึ่งเป็นเครื่องมือที่เพิ่งเจอเป็นครั้งแรกเลย
ตอนนี้ LLM โอเพนซอร์สจำนวนมากอยู่ในระดับ “ใช้งานได้” แล้ว สิ่งสำคัญคือทำให้การพัฒนารอบ ๆ มันง่ายขึ้น
โดยเฉพาะคนที่เป็นทั้งผู้ใช้และนักพัฒนาควรสามารถใช้ ข้อมูลส่วนตัว/ไม่เปิดเผย หรือพูดให้ชัดคือข้อมูลที่ไม่ได้อยู่ในการ pretraining ของโมเดลได้
ใน repository ระบุว่าเหมาะกับโมเดลขนาดใหญ่และต้องใช้ A100/H100 แต่ถึงอย่างนั้นก็รู้สึกว่าสิ่งนี้อาจช่วยโมเดลขนาดเล็กได้มากกว่าโมเดลขนาดใหญ่
สามารถขยายแนวคิด “ถ้าสร้างไว้ เดี๋ยวคนก็มา” ไปเป็น “ถ้ามีเครื่องมือให้ เดี๋ยวคนก็สร้าง” ได้
ส่วนของ น้ำหนักโมเดล น่าสนใจ
SFTTrainer ของ HuggingFace ให้ฝึกเฉพาะส่วนคำตอบได้ถ้าต้องการ แต่แม้สำหรับมนุษย์จะดูเป็นธรรมชาติแบบนั้น โดยทั่วไป LLM มักเรียนรู้ได้ดีกว่าเมื่อฝึกให้คาดการณ์อินพุตทั้งหมด
วิธีนี้จึงได้ข้อดีของทั้งสองฝั่ง
จะปรับแต่งให้ฝึกโมเดลตัวแปรที่ใหญ่ขึ้นด้วย 3090 หรือ 4090 สองใบได้ไหม?
จุดเริ่มต้นที่พูดถึงตัวเลือกบางอย่างอยู่ที่นี่: https://huggingface.co/blog/trl-peft
จะฝึก โมเดลแชต WhatsApp ของฉันได้อย่างไร?
อยากฝึกโมเดลด้วยข้อความ WhatsApp ของตัวเองหรือ? จุดประสงค์คืออะไร? ขึ้นอยู่กับว่าต้องการให้มันเขียนเหมือนตัวเอง หรืออยากทำถามตอบแบบ RAG