คำแนะนำ โค้ด และการกำหนดค่าสำหรับตระกูลโมเดล ReplitLM
สิ่งนี้ได้รับการอัปเดตอย่างต่อเนื่องเพื่อเพิ่มวิธีการใช้งานและสร้างเพิ่มเติมจากโมเดลของเรา
แบบอย่าง | จุดตรวจ [CC BY-SA 4.0] | คำศัพท์ [CC BY-SA 4.0] | รหัส [Apache 2.0] |
---|---|---|---|
ทำซ้ำรหัส-v1-3b | ลิงค์ดาวน์โหลด | ดาวน์โหลด | ซื้อซ้ำ |
ทำซ้ำรหัส-v1_5-3b | (เร็วๆ นี้) | (เร็วๆ นี้) | เร็วๆ นี้ |
2 พฤษภาคม 2023: replit-code-v1-3b
นอกจากนี้เรายังมีพื้นที่ที่ขับเคลื่อนด้วย GPU สำหรับโมเดล replit-code-v1-3b
ซึ่งคุณสามารถใช้โมเดลได้โดยตรง!
การสาธิตโฮสต์ที่ขับเคลื่อนด้วย GPU
โมเดล Replit ที่เผยแพร่ทั้งหมดมีอยู่ใน Hugging Face ใต้หน้าองค์กร Replit และสามารถใช้ได้กับไลบรารี Hugging Face Transformers
คุณสามารถใช้โมเดล Replit กับไลบรารี Hugging Face Transformers ได้ README สำหรับรุ่นที่วางจำหน่ายแต่ละรุ่นมีคำแนะนำเกี่ยวกับวิธีใช้แบบจำลองกับ Hugging Face Transformers ตรวจสอบให้แน่ใจว่าคุณได้ตั้งค่า clean_up_tokenization_spaces=False
เมื่อถอดรหัสด้วยโทเค็นไนเซอร์ รวมถึงใช้การประมวลผลภายหลังที่แนะนำที่ให้ไว้ใน README
แบบอย่าง | อ่านฉัน |
---|---|
ทำซ้ำรหัส-v1-3b | เอกสารประกอบ |
เราขอแนะนำการฝึกอบรมเพิ่มเติม การฝึกอบรมล่วงหน้า และการปรับแต่งโมเดล Replit ด้วย LLM Foundry and Composer ของ MosaicML
โมเดล Replit ของเราเข้ากันได้กับ LLM Foundry และสามารถฝึก/ปรับแต่งด้วยวิธีที่ได้รับการปรับปรุงประสิทธิภาพขั้นสูงด้วย LLM Foundry + Composer โดยใช้เทคนิคการฝึกอบรมที่ล้ำสมัย ส่วนประกอบทางสถาปัตยกรรม เครื่องมือเพิ่มประสิทธิภาพ และอื่นๆ โมเดลทั้งหมด, LLM Foundry และเฟรมเวิร์คการฝึกอบรม Composer เป็นแบบ Pytorch การใช้สิ่งเหล่านี้ทำให้คุณสามารถฝึกโมเดล Replit บนชุดข้อมูลของคุณเองได้
ขั้นตอนต่อไปนี้จะให้โครงร่างของสิ่งที่ต้องทำเพื่อฝึกโมเดลพร้อมลิงก์ไปยังส่วนเอกสารประกอบของ LLM Foundry ที่จำเป็นสำหรับแต่ละขั้นตอน:
ติดตั้งโรงหล่อ LLM
ในการเริ่มต้นกับ LLM Foundry คุณสามารถติดตาม LLM Foundry README เพื่อ:
ในระดับสูง LLM Foundry จะถูกใช้โดยการกำหนด yaml การกำหนดค่า จากนั้นเรียกใช้สคริปต์การฝึกอบรม train/train.py
ใน repo LLM Foundry ด้วย yaml การกำหนดค่าที่กำหนดไว้โดยใช้คำสั่ง เช่น composer train/train.py <configuration_yaml_path> <extra_args>
. scripts/train/yamls dir มี YAML ตัวอย่างสำหรับทั้งการปรับแต่งและการปรับแต่งล่วงหน้า
ติดตั้งข้อกำหนดอื่นๆ สำหรับโมเดล Replit
จากนั้นคุณจะต้องติดตั้งการขึ้นต่อกันอื่นๆ สองสามรายการที่ระบุในข้อกำหนด. requirements.txt
หากต้องการฝึกกับ LLM Foundry คุณต้องแปลงชุดข้อมูลเป็นรูปแบบ Mosaic StreamingDataset
ประเภทของแหล่งที่มาของชุดข้อมูลที่รองรับ ได้แก่ ชุดข้อมูล JSON และชุดข้อมูล Hugging Face
เอกสารการเตรียมข้อมูลใน LLM Foundry จะให้ขั้นตอนเกี่ยวกับวิธีการทำเช่นนี้
เมื่อเรียกใช้ convert_dataset_hf.py
หรือ convert_dataset_json.py
ในขั้นตอนข้างต้น คุณจะต้องระบุว่าคุณกำลังใช้ Replit tokenizer โดยส่งผ่านอาร์กิวเมนต์ --tokenizer replit/replit-code-v1-3b
ขั้นตอนสำคัญ (เนื่องจากการใช้งานปัจจุบันของ llm-foundry
) คือการแก้ไข scripts/data_prep/convert_dataset_hf.py
โดยส่ง trust_remote_code=True
kwarg ไปยังการเรียก AutoTokenizer.from_pretrained
เมื่อ tokenizer ถูกโหลดในเมธอด main()
ทดสอบชุดข้อมูลที่แปลงแล้วของคุณ
หากต้องการทดสอบชุดข้อมูลที่แปลงแล้วและตรวจสอบว่าทำงานกับตัวโหลดข้อมูลหรือไม่ คุณสามารถทำตามส่วนทดสอบ Dataloader ในเอกสาร LLM Foundry
หากต้องการฝึกกับ LLM Foundry คุณต้องกำหนด yaml การกำหนดค่าการรัน yaml นี้จะกำหนดโมเดล ชุดข้อมูลการฝึก ชุดข้อมูลและเมตริก eval พารามิเตอร์การฝึก และอื่นๆ
การใช้แบบจำลอง Replit
สำหรับการกำหนดค่า YAML ใดๆ ที่คุณกำหนดเพื่อฝึกฝน/ปรับแต่งด้วย LLM Foundry คุณสามารถเสียบปลั๊กและใช้โมเดล Replit ได้โดยการแทนที่โมเดลและคีย์โทเค็นใน YAML ของคุณดังนี้:
...
model:
name: hf_causal_lm
pretrained: true
pretrained_model_name_or_path: replit/replit-code-v1-3b
config_overrides:
attn_config:
attn_impl: triton
attn_uses_sequence_id: false
tokenizer:
name: replit/replit-code-v1-3b
kwargs:
model_max_length: ${max_seq_len}
trust_remote_code: true
...
นี่จะโหลดโมเดลของเราพร้อมน้ำหนักจาก Hugging Face สำหรับการกำหนดค่าของคุณ
หลังจากแปลงชุดข้อมูลและกำหนด yaml การกำหนดค่าการรันแล้ว คุณสามารถดำเนินการฝึกอบรมกับ LLM Foundry ได้
ปฏิบัติตามส่วนวิธีเริ่มต้นการฝึกอบรมในเอกสาร LLM Foundry เพื่อดำเนินการฝึกอบรม ส่วนนี้จะแสดงวิธีรันการฝึกอบรมโหนดเดียวและหลายโหนด อย่างมีประสิทธิภาพ คุณจะรันสคริปต์การฝึกอบรม scripts/train/train.py
ใน repo LLM Foundry ด้วยการกำหนดค่า yaml ที่กำหนดไว้โดยใช้คำสั่ง เช่น composer train/train.py <configuration_yaml_path> <extra_args>
มีตรรกะฮาร์ดโค้ดบางอย่างใน Composer ที่เราจำเป็นต้องหลีกเลี่ยงเพื่อบันทึกจุดตรวจสอบ ในสคริปต์การฝึกอบรม scripts/train/train.py
ให้เพิ่มบรรทัด model.tokenizer = None
หลังจากเริ่มต้นโมเดลแล้วและก่อนที่จะตั้งค่า Train Dataloader เช่น ในขณะที่เขียน บรรทัด 147 ใน main()
สิ่งนี้ทำให้แน่ใจได้อย่างมีประสิทธิภาพว่าเราจะไม่บันทึกโทเค็นไนเซอร์ด้วยสถานะจุดตรวจสอบ เราต้องการวิธีแก้ปัญหานี้เนื่องจากในปัจจุบัน Composer ไม่สามารถจัดการจุดตรวจสอบการบันทึกด้วยโทเค็นไนเซอร์ที่มีไฟล์ *.py
ได้
คุณสามารถแนะนำการปรับแต่งโมเดล ReplitLM ของเราสำหรับกรณีการใช้งานของคุณเองได้ สำหรับกรณีการใช้งานการปรับแต่งคำสั่งส่วนใหญ่ เราขอแนะนำให้เริ่มจากตัวอย่าง Hugging Face ด้านล่าง หรือเรายังให้คำแนะนำโดยละเอียดเกี่ยวกับการปรับแต่งคำสั่งกับ LLM Foundry อีกด้วย
คุณสามารถสั่งสอนการปรับแต่งโมเดล replit-code-v1-3b
บนชุดข้อมูลสไตล์ Alpaca ได้โดยใช้ไลบรารี transformers
เพื่อให้บรรลุเป้าหมายดังกล่าว คุณจะต้องมีชุดข้อมูลการปรับแต่งคำสั่งที่อยู่ในรูปแบบ Alpaca อยู่แล้ว เช่น:
Teknium ผู้สนับสนุนโอเพ่นซอร์สได้แยก Alpaca repo ดั้งเดิมไปยัง repo stanford_alpaca-replit ที่ได้รับการกำหนดค่าล่วงหน้าให้ทำงานกับโมเดลของเรา เราขอแนะนำอย่างยิ่งให้คุณใช้สิ่งนี้เป็นจุดเริ่มต้น
repo มีคำแนะนำเกี่ยวกับวิธีการตั้งค่าและเรียกใช้เทรนเนอร์ มีการอธิบายรูปแบบชุดข้อมูลสไตล์ Alpaca ที่จำเป็นไว้ที่นี่ ชุดข้อมูลใดๆ ที่จัดรูปแบบเป็น Alpaca จะทำงานร่วมกับเทรนเนอร์ได้ ตัวอย่างเช่น ชุดข้อมูล Code Alpaca สามารถใช้เพื่อสั่งการปรับแต่งโมเดลของเราโดยใช้สคริปต์การฝึกใน repo ของ Teknium
คุณยังสามารถใช้ LLM Foundry เพื่อปรับแต่งคำสั่งได้ ในการทำเช่นนั้น คุณต้องทำตามขั้นตอนต่อไปนี้ในระดับสูง โดยมีรายละเอียดและขั้นตอนเฉพาะที่คุณต้องปฏิบัติตามตามลิงก์ตามความจำเป็น:
ติดตั้งโรงหล่อ LLM
ในการเริ่มต้นกับ LLM Foundry คุณสามารถติดตาม LLM Foundry README เพื่อ:
ในระดับสูง LLM Foundry จะถูกใช้โดยการกำหนด yaml การกำหนดค่า จากนั้นเรียกใช้สคริปต์การฝึกอบรม train/train.py
ใน repo LLM Foundry ด้วย yaml การกำหนดค่าที่กำหนดไว้โดยใช้คำสั่ง เช่น composer train/train.py <configuration_yaml_path> <extra_args>
. scripts/train/yamls dir มีตัวอย่าง YAML สำหรับทั้งการปรับแต่งล่วงหน้า
ติดตั้งข้อกำหนดอื่นๆ สำหรับโมเดล Replit
จากนั้นคุณจะต้องติดตั้งการขึ้นต่อกันอื่นๆ สองสามรายการที่ระบุในข้อกำหนด. requirements.txt
อาจเป็นอย่างใดอย่างหนึ่งต่อไปนี้:
ขึ้นอยู่กับชุดข้อมูลที่คุณใช้ คุณอาจต้องหรือไม่จำเป็นต้องจัดรูปแบบชุดข้อมูลให้อยู่ในรูปแบบที่ LLM Foundry คาดหวัง
ชุดข้อมูลที่ไม่จำเป็นต้องประมวลผลล่วงหน้าแบบกำหนดเอง
ชุดข้อมูลบางชุด เช่น mosaicml/dolly_hhrlhf มาพร้อมกับฟังก์ชันการประมวลผลล่วงหน้าที่คุณสามารถใช้งานได้ทันที ณ เวลาที่เผยแพร่ ชุดข้อมูล Hugging Face ต่อไปนี้มาพร้อมกับฟังก์ชันการประมวลผลล่วงหน้าที่ลงทะเบียนล่วงหน้า: HuggingFaceH4/databricks_dolly_15k
, Muennighoff/P3
, Muennighoff/flan
, bigscience/P3
, tatsu-lab/alpaca
ชุดข้อมูลที่จำเป็นต้องมีการประมวลผลล่วงหน้าแบบกำหนดเอง
หากคุณไม่ได้ใช้ชุดข้อมูลใดๆ ข้างต้น คุณจะต้องเขียนฟังก์ชันการประมวลผลล่วงหน้าของคุณเองและลงทะเบียน
สำหรับชุดข้อมูลใดๆ คุณต้องมีแต่ละตัวอย่างที่จัดรูปแบบเป็นพจนานุกรมด้วยคีย์ต่อไปนี้:
formatted_example = { 'prompt' : < prompt_text > , 'response' : < response_text > }
กล่าวคือ แต่ละตัวอย่างจะเป็นพจนานุกรมที่มีสองคีย์ นี่คือรูปแบบที่ตัวโหลดข้อมูล finetuning
คาดหวังดาวน์สตรีม
คำแนะนำสำหรับการจัดรูปแบบชุดข้อมูลของคุณ
ส่วนการจัดรูปแบบข้อมูลใน repo LLM Foundry ดั้งเดิมจะอธิบายวิธีการทำเช่นนี้
ในกรณีที่คุณจำเป็นต้องสร้างฟังก์ชันการประมวลผลล่วงหน้าแบบกำหนดเองเพื่อให้ข้อมูลของคุณอยู่ในรูปแบบที่ถูกต้อง และขั้นตอนในเอกสารประกอบของ LLM Foundry ทำให้คุณสับสน คำถอดความของ TL;DR จะเป็นดังนี้:
preprocess.py
) ที่ไหนสักแห่งใน codebase ของคุณ เช่น ในไดเร็กทอรีเดียวกันกับสคริปต์การฝึกของคุณ ตราบใดที่สคริปต์การฝึกของคุณสามารถนำเข้าไฟล์นั้นได้preprocess_function()
ที่ใช้เป็นอินพุตหนึ่งตัวอย่างจากชุดข้อมูลของคุณ และส่งกลับพจนานุกรมพร้อมคีย์ prompt
ต์และ response
ตามที่อธิบายไว้ข้างต้น ตามตรรกะของคุณเกี่ยวกับวิธีจัดรูปแบบตัวอย่างให้อยู่ในรูปแบบที่ต้องการpreprocess.py
) และฟังก์ชัน (เช่น preprocess_function()
) ที่คุณสร้างขึ้น ตอนนี้คุณสามารถใช้ชุดข้อมูลของคุณเพื่อปรับแต่งโมเดล Replit ได้
แนะนำ
ส่วนการใช้งานใน repo LLM Foundry ดั้งเดิมจะอธิบายวิธีใช้ชุดข้อมูลของคุณและปรับแต่งโมเดล Replit
หากคุณใช้ตัวเลือก 1) หรือ 2) ในส่วนนั้น คุณจะต้องแก้ไข train_loader
และ eval_loader
ถ้ามี ในการฝึกอบรม YAML ตามสิ่งที่คุณทำในสองขั้นตอนก่อนหน้านี้ หากคุณใช้ตัวเลือกที่ 3) (เช่น ชุดข้อมูลแบบสตรีม) คุณจะต้องแปลงชุดข้อมูลเป็นรูปแบบที่ถูกต้องด้วยปุ่มพร้อมท์และปุ่มตอบกลับ จากนั้นจึงเขียนลงในชุดข้อมูล MDS ในเครื่อง หลังจากนี้คุณสามารถแก้ไข YAML ของคุณให้ชี้ไปที่สิ่งนี้ได้