อังกฤษ | 中文
- กอดหน้า • ? โมเดลสโคป • ? แบบอย่างอันชาญฉลาด
ถามคำถามหรือหารือเกี่ยวกับแนวคิดบน GitHub
เข้าร่วมกับเราบน ? ดิสคอร์ดหรือวีแชต
ตรวจสอบรายงานของ Yi Tech
เติบโตที่ Yi Learning Hub
- เรียนรู้ที่บล็อกของ Yi Tech
- โมเดลซีรีส์ Yi เป็นโมเดลภาษาโอเพ่นซอร์สขนาดใหญ่รุ่นต่อไปที่ได้รับการฝึกฝนตั้งแต่เริ่มต้นโดย 01.AI
- ซีรีส์ Yi มีเป้าหมายเป็นโมเดลภาษาสองภาษาและได้รับการฝึกอบรมเกี่ยวกับคลังข้อมูลหลายภาษาของ 3T และกลายเป็นหนึ่งใน LLM ที่แข็งแกร่งที่สุดในโลก โดยแสดงให้เห็นถึงศักยภาพในด้านความเข้าใจภาษา การใช้เหตุผลเชิงสามัญสำนึก ความเข้าใจในการอ่าน และอื่นๆ อีกมากมาย ตัวอย่างเช่น,
โมเดล Yi-34B-Chat ขึ้นสู่อันดับที่สอง (ตามหลัง GPT-4 Turbo) ซึ่งเหนือกว่า LLM อื่นๆ (เช่น GPT-4, Mixtral, Claude) บนกระดานผู้นำ AlpacaEval (อิงตามข้อมูลที่มีจนถึงเดือนมกราคม 2024)
โมเดล Yi-34B ได้รับการจัดอันดับเป็นที่หนึ่งในบรรดาโมเดลโอเพ่นซอร์สที่มีอยู่ทั้งหมด (เช่น Falcon-180B, Llama-70B, Claude) ทั้งภาษาอังกฤษและภาษาจีน บนเกณฑ์มาตรฐานต่างๆ รวมถึง Hugging Face Open LLM Leaderboard (ผ่านการฝึกอบรมล่วงหน้า) และ C-Eval (ตามข้อมูลที่มีจนถึงเดือนพฤศจิกายน 2023)
(ขอขอบคุณ Llama) ต้องขอบคุณชุมชนโอเพ่นซอร์ส Transformer และ Llama ที่พวกเขาลดความพยายามที่จำเป็นในการสร้างตั้งแต่เริ่มต้นและเปิดใช้งานการใช้เครื่องมือเดียวกันภายในระบบนิเวศ AI
TL;ดร
โมเดลซีรีส์ Yi ใช้สถาปัตยกรรมโมเดลเดียวกันกับลามะ แต่ ไม่ใช่ อนุพันธ์ของลามะ
ทั้ง Yi และ Llama อิงตามโครงสร้าง Transformer ซึ่งเป็นสถาปัตยกรรมมาตรฐานสำหรับโมเดลภาษาขนาดใหญ่มาตั้งแต่ปี 2018
ด้วยพื้นฐานสถาปัตยกรรม Transformer Llama ได้กลายเป็นรากฐานใหม่สำหรับโมเดลโอเพ่นซอร์สที่ล้ำสมัยส่วนใหญ่ เนื่องจากความเสถียรที่ยอดเยี่ยม การบรรจบกันที่เชื่อถือได้ และความเข้ากันได้ที่แข็งแกร่ง สิ่งนี้ทำให้ Llama เป็นเฟรมเวิร์กพื้นฐานที่ได้รับการยอมรับสำหรับโมเดลต่างๆ รวมถึง Yi
ด้วยสถาปัตยกรรม Transformer และ Llama โมเดลอื่นๆ จึงสามารถใช้ประโยชน์จากพลังของตนได้ ลดความพยายามที่จำเป็นในการสร้างตั้งแต่เริ่มต้น และช่วยให้สามารถใช้เครื่องมือเดียวกันภายในระบบนิเวศของตนได้
อย่างไรก็ตาม โมเดลซีรีส์ Yi ไม่ใช่อนุพันธ์ของลามะ เนื่องจากไม่ได้ใช้ตุ้มน้ำหนักของลามะ
เนื่องจากโครงสร้างของ Llama ถูกใช้โดยโมเดลโอเพ่นซอร์สส่วนใหญ่ ปัจจัยสำคัญในการพิจารณาประสิทธิภาพของโมเดลคือชุดข้อมูลการฝึกอบรม ไปป์ไลน์การฝึกอบรม และโครงสร้างพื้นฐานการฝึกอบรม
ด้วยการพัฒนาในลักษณะที่เป็นเอกลักษณ์และเป็นกรรมสิทธิ์ Yi ได้สร้างชุดข้อมูลการฝึกอบรมคุณภาพสูงของตัวเอง ไปป์ไลน์การฝึกอบรมที่มีประสิทธิภาพ และโครงสร้างพื้นฐานการฝึกอบรมที่แข็งแกร่งตั้งแต่ต้นทางอย่างอิสระ ความพยายามนี้ได้นำไปสู่ประสิทธิภาพที่ยอดเยี่ยมด้วยรุ่น Yi Series ซึ่งอยู่อันดับหลัง GPT4 และแซงหน้า Llama บนกระดานผู้นำ Alpaca ในเดือนธันวาคม 2023
[ กลับไปด้านบน ⬆️ ]
Yi-9B-200K
เป็นแบบโอเพ่นซอร์สและเผยแพร่สู่สาธารณะYi-9B
เป็นแบบโอเพ่นซอร์สและเผยแพร่สู่สาธารณะYi-9B
โดดเด่นในฐานะประสิทธิภาพอันดับต้นๆ ในบรรดารุ่นโอเพ่นซอร์สที่มีขนาดใกล้เคียงกัน (รวมถึง Mistral-7B, SOLAR-10.7B, Gemma-7B, DeepSeek-Coder-7B-Base-v1.5 และอื่นๆ) โดยเฉพาะอย่างยิ่งในการเขียนโค้ด คณิตศาสตร์ การใช้เหตุผลสามัญสำนึก และความเข้าใจในการอ่านYi-VL-34B
และ Yi-VL-6B
เป็นแบบโอเพ่นซอร์สและเผยแพร่สู่สาธารณะYi-VL-34B
ได้รับการจัดอันดับ เป็นที่หนึ่ง ในบรรดาโมเดลโอเพ่นซอร์สที่มีอยู่ทั้งหมดในการวัดประสิทธิภาพล่าสุด รวมถึง MMMU และ CMMMU (อิงตามข้อมูลที่มีจนถึงเดือนมกราคม 2024)Yi-34B-Chat
Yi-34B-Chat-4bits
Yi-34B-Chat-8bits
Yi-6B-Chat
Yi-6B-Chat-4bits
Yi-6B-Chat-8bits
คุณสามารถลองโต้ตอบบางส่วนได้ที่:
Yi-6B-200K
และ Yi-34B-200K
เป็นแบบโอเพ่นซอร์สและเผยแพร่สู่สาธารณะYi-6B
และ Yi-34B
เป็นแบบโอเพ่นซอร์สและเผยแพร่สู่สาธารณะ[ กลับไปด้านบน ⬆️ ]
รุ่น Yi มีหลายขนาดและรองรับกรณีการใช้งานที่แตกต่างกัน คุณยังสามารถปรับแต่งโมเดล Yi ให้ตรงตามความต้องการเฉพาะของคุณได้
หากคุณต้องการปรับใช้โมเดล Yi ตรวจสอบให้แน่ใจว่าคุณมีคุณสมบัติตรงตามข้อกำหนดด้านซอฟต์แวร์และฮาร์ดแวร์
แบบอย่าง | ดาวน์โหลด |
---|---|
Yi-34B-แชท | - กอดหน้า • ? โมเดลสโคป • ? แบบอย่างอันชาญฉลาด |
Yi-34B-แชท-4bits | - กอดหน้า • ? โมเดลสโคป • ? แบบอย่างอันชาญฉลาด |
Yi-34B-แชท-8bits | - กอดหน้า • ? โมเดลสโคป • ? แบบอย่างอันชาญฉลาด |
Yi-6B-แชท | - กอดหน้า • ? โมเดลสโคป • ? แบบอย่างอันชาญฉลาด |
Yi-6B-แชท-4bits | - กอดหน้า • ? โมเดลสโคป • ? แบบอย่างอันชาญฉลาด |
Yi-6B-แชท-8bits | - กอดหน้า • ? โมเดลสโคป • ? แบบอย่างอันชาญฉลาด |
- โมเดลซีรีส์ 4 บิตได้รับการวัดปริมาณโดย AWQ
- โมเดลซีรีส์ 8 บิตได้รับการวัดปริมาณโดย GPTQ
- โมเดลเชิงปริมาณทั้งหมดมีอุปสรรคในการใช้งานต่ำ เนื่องจากสามารถนำไปใช้กับ GPU ระดับผู้บริโภคได้ (เช่น 3090, 4090)
แบบอย่าง | ดาวน์โหลด |
---|---|
ยี่-34B | - กอดหน้า • ? โมเดลสโคป • ? แบบอย่างอันชาญฉลาด |
ยี่-34B-200K | - กอดหน้า • ? โมเดลสโคป • ? แบบอย่างอันชาญฉลาด |
ยี่-9B | - กอดหน้า • ? โมเดลสโคป • ? แบบอย่างอันชาญฉลาด |
ยี่-9B-200K | - กอดหน้า • ? โมเดลสโคป • ? แบบอย่างอันชาญฉลาด |
ยี่-6B | - กอดหน้า • ? โมเดลสโคป • ? แบบอย่างอันชาญฉลาด |
ยี่-6B-200K | - กอดหน้า • ? โมเดลสโคป • ? แบบอย่างอันชาญฉลาด |
- 200,000 เทียบเท่ากับตัวอักษรจีน 400,000 ตัวโดยประมาณ
- หากคุณต้องการใช้ Yi-34B-200K เวอร์ชันก่อนหน้า (เปิดตัวเมื่อวันที่ 5 พฤศจิกายน 2023) ให้รัน git checkout 069cd341d60f4ce4b07ec394e82b79e94f656cf
เพื่อดาวน์โหลดน้ำหนัก
แบบอย่าง | บทนำ | หน้าต่างบริบทเริ่มต้น | โทเค็นที่ได้รับการฝึกอบรมล่วงหน้า | วันที่ข้อมูลการฝึกอบรม |
---|---|---|---|---|
รุ่นซีรีส์ 6B | เหมาะสำหรับการใช้งานส่วนบุคคลและเชิงวิชาการ | 4เค | 3ต | จนถึงเดือนมิถุนายน 2023 |
รุ่นซีรีส์ 9B | การเขียนโค้ดและคณิตศาสตร์ดีที่สุดในรุ่น Yi Series | Yi-9B ได้รับการฝึกอบรมอย่างต่อเนื่องโดยใช้ Yi-6B โดยใช้โทเค็น 0.8T | ||
รุ่นซีรีส์ 34B | เหมาะสำหรับวัตถุประสงค์ส่วนบุคคล การศึกษา และเชิงพาณิชย์ (โดยเฉพาะสำหรับองค์กรขนาดเล็กและขนาดกลาง) เป็นโซลูชันที่คุ้มค่าคุ้มราคาและมาพร้อมกับความสามารถฉุกเฉิน | 3ต |
สำหรับรุ่นแชท
อย่างไรก็ตาม ความหลากหลายที่สูงขึ้นนี้อาจขยายประเด็นปัญหาที่มีอยู่บางประการ เช่น:
[ กลับไปด้านบน ⬆️ ]
เคล็ดลับ : หากคุณต้องการเริ่มต้นใช้งานโมเดล Yi และสำรวจวิธีการอนุมานต่างๆ โปรดดูที่ Yi Cookbook
เลือกหนึ่งในเส้นทางต่อไปนี้เพื่อเริ่มต้นการเดินทางของคุณกับ Yi!
หากคุณต้องการปรับใช้โมเดล Yi ภายในเครื่อง
?♀️ และคุณมีทรัพยากร เพียงพอ (เช่น NVIDIA A800 80GB) คุณสามารถเลือกวิธีใดวิธีหนึ่งต่อไปนี้:
?♀️ และคุณมีทรัพยากร ที่จำกัด (เช่น MacBook Pro) คุณสามารถใช้ llama.cpp ได้
หากคุณไม่ต้องการปรับใช้โมเดล Yi ภายในเครื่อง คุณสามารถสำรวจความสามารถของ Yi ได้โดยใช้ตัวเลือกใดๆ ต่อไปนี้
หากคุณต้องการสำรวจคุณสมบัติเพิ่มเติมของ Yi คุณสามารถใช้วิธีใดวิธีหนึ่งต่อไปนี้:
Yi APIs (อย่างเป็นทางการของ Yi)
Yi API (จำลอง)
หากคุณต้องการแชทกับ Yi ด้วยตัวเลือกที่ปรับแต่งได้มากขึ้น (เช่น ข้อความเตือนของระบบ อุณหภูมิ การลงโทษการทำซ้ำ ฯลฯ) คุณสามารถลองใช้ตัวเลือกใดตัวเลือกหนึ่งต่อไปนี้:
Yi-34B-Chat-Playground (ยี่อย่างเป็นทางการ)
Yi-34B-Chat-Playground (จำลอง)
หากคุณต้องการแชทกับ Yi คุณสามารถใช้หนึ่งในบริการออนไลน์เหล่านี้ ซึ่งให้ประสบการณ์ผู้ใช้ที่คล้ายกัน:
Yi-34B-Chat (ยี่อย่างเป็นทางการใน Hugging Face)
Yi-34B-Chat (ยี่เบต้าอย่างเป็นทางการ)
[ กลับไปด้านบน ⬆️ ]
บทช่วยสอนนี้จะแนะนำคุณตลอดทุกขั้นตอนของการรัน Yi-34B-Chat ในเครื่อง A800 (80G) จากนั้นทำการอนุมาน
ตรวจสอบให้แน่ใจว่าติดตั้ง Python 3.10 หรือเวอร์ชันที่ใหม่กว่าแล้ว
หากคุณต้องการใช้งานโมเดล Yi อื่นๆ โปรดดูข้อกำหนดซอฟต์แวร์และฮาร์ดแวร์
ในการตั้งค่าสภาพแวดล้อมและติดตั้งแพ็คเกจที่จำเป็น ให้ดำเนินการคำสั่งต่อไปนี้
git clone https://github.com/01-ai/Yi.git
cd yi
pip install -r requirements.txt
คุณสามารถดาวน์โหลดน้ำหนักและโทเค็นไนเซอร์ของโมเดล Yi ได้จากแหล่งต่อไปนี้:
คุณสามารถทำการอนุมานด้วย Yi Chat หรือโมเดลพื้นฐานได้ดังนี้
สร้างไฟล์ชื่อ quick_start.py
และคัดลอกเนื้อหาต่อไปนี้ลงไป
from transformers import AutoModelForCausalLM , AutoTokenizer
model_path = '<your-model-path>'
tokenizer = AutoTokenizer . from_pretrained ( model_path , use_fast = False )
# Since transformers 4.35.0, the GPT-Q/AWQ model can be loaded using AutoModelForCausalLM.
model = AutoModelForCausalLM . from_pretrained (
model_path ,
device_map = "auto" ,
torch_dtype = 'auto'
). eval ()
# Prompt content: "hi"
messages = [
{ "role" : "user" , "content" : "hi" }
]
input_ids = tokenizer . apply_chat_template ( conversation = messages , tokenize = True , add_generation_prompt = True , return_tensors = 'pt' )
output_ids = model . generate ( input_ids . to ( 'cuda' ))
response = tokenizer . decode ( output_ids [ 0 ][ input_ids . shape [ 1 ]:], skip_special_tokens = True )
# Model response: "Hello! How can I assist you today?"
print ( response )
เรียกใช้ quick_start.py
python quick_start.py
จากนั้นคุณจะเห็นผลลัพธ์ที่คล้ายกับผลลัพธ์ด้านล่าง -
Hello ! How can I assist you today ?
ยี่-34B
ขั้นตอนจะคล้ายกับ pip - ทำการอนุมานด้วยโมเดล Yi chat
คุณสามารถใช้ไฟล์ text_generation.py
ที่มีอยู่ได้
python demo/text_generation.py --model < your-model-path >
จากนั้นคุณจะเห็นผลลัพธ์ที่คล้ายกับผลลัพธ์ด้านล่าง -
พร้อม : ขอเล่าเรื่องน่าสนใจเกี่ยวกับแมวทอมกับเจอร์รี่หนูหน่อยค่ะ
Generation : ขอเล่าเรื่องราวที่น่าสนใจเกี่ยวกับแมวทอมและเมาส์เจอร์รี่ที่เกิดขึ้นในวัยเด็กของฉัน พ่อของฉันมีบ้านหลังใหญ่ที่มีแมวสองตัวอาศัยอยู่ข้างในเพื่อฆ่าหนู วันหนึ่ง ขณะที่ฉันเล่นอยู่ที่บ้านคนเดียว ฉันพบแมวตัวหนึ่งนอนอยู่บนหลังใกล้ประตูห้องครัวของเรา ดูราวกับว่ามันต้องการบางอย่างจากเราแต่ไม่สามารถลุกขึ้นได้ เพราะมีคนอยู่รอบตัวเขามากเกินไป! เขาพยายามอยู่หลายนาทีก่อนที่จะยอมแพ้ในที่สุด...
ยี่-9B
ป้อนข้อมูล
from transformers import AutoModelForCausalLM, AutoTokenizer
MODEL_DIR = " 01-ai/Yi-9B "
model = AutoModelForCausalLM.from_pretrained(MODEL_DIR, torch_dtype= " auto " )
tokenizer = AutoTokenizer.from_pretrained(MODEL_DIR, use_fast=False)
input_text = " # write the quick sort algorithm "
inputs = tokenizer(input_text, return_tensors= " pt " ).to(model.device)
outputs = model.generate( ** inputs, max_length=256)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
เอาท์พุต
# write the quick sort algorithm
def quick_sort(arr):
if len(arr) < = 1:
return arr
pivot = arr[len(arr) // 2]
left = [x for x in arr if x < pivot]
middle = [x for x in arr if x == pivot]
right = [x for x in arr if x > pivot]
return quick_sort(left) + middle + quick_sort(right)
# test the quick sort algorithm
print(quick_sort([3, 6, 8, 10, 1, 2, 1]))
[ กลับไปด้านบน ⬆️ ]
ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง Docker และ nvidia-container-toolkit แล้ว
docker run -it --gpus all
-v <your-model-path>: /models
ghcr.io/01-ai/yi:latest
หรือคุณสามารถดึงอิมเมจ Yi Docker ได้จาก registry.lingyiwanwu.com/ci/01-ai/yi:latest
คุณสามารถทำการอนุมานด้วย Yi Chat หรือโมเดลพื้นฐานได้ดังนี้
ขั้นตอนจะคล้ายกับ pip - ทำการอนุมานด้วยโมเดล Yi chat
โปรดทราบ ว่าข้อแตกต่างเพียงอย่างเดียวคือการตั้งค่า model_path = '<your-model-mount-path>'
แทน model_path = '<your-model-path>'
ขั้นตอนจะคล้ายกับ pip - ทำการอนุมานด้วยโมเดลฐาน Yi
โปรดทราบ ว่าข้อแตกต่างเพียงอย่างเดียวคือการตั้งค่า --model <your-model-mount-path>'
แทน model <your-model-path>
conda-lock
เพื่อสร้างไฟล์ล็อคที่ทำซ้ำได้อย่างสมบูรณ์สำหรับสภาพแวดล้อม condamicromamba
เพื่อติดตั้งการขึ้นต่อกันเหล่านี้ได้ติดตั้ง micromamba โดยทำตามคำแนะนำที่มีให้ที่นี่
ดำเนินการ micromamba install -y -n yi -f conda-lock.yml
เพื่อสร้างสภาพแวดล้อม conda ชื่อ yi
และติดตั้งการขึ้นต่อกันที่จำเป็น
บทช่วยสอนต่อไปนี้จะแนะนำคุณตลอดทุกขั้นตอนของการรันโมเดลเชิงปริมาณ (Yi-chat-6B-2bits) ภายในเครื่อง จากนั้นทำการอนุมาน
บทช่วยสอนนี้อนุมานว่าคุณใช้ MacBook Pro ที่มีหน่วยความจำ 16GB และชิป Apple M2 Pro
ตรวจสอบให้แน่ใจว่าติดตั้ง git-lfs
บนเครื่องของคุณแล้ว
llama.cpp
หากต้องการโคลนพื้นที่เก็บข้อมูล llama.cpp
ให้รันคำสั่งต่อไปนี้
git clone [email protected]:ggerganov/llama.cpp.git
2.1 หากต้องการโคลน XeIaso/yi-chat-6B-GGUF ด้วยพอยน์เตอร์ ให้รันคำสั่งต่อไปนี้
GIT_LFS_SKIP_SMUDGE=1 git clone https://huggingface.co/XeIaso/yi-chat-6B-GGUF
2.2 หากต้องการดาวน์โหลดโมเดล Yi เชิงปริมาณ (yi-chat-6b.Q2_K.gguf) ให้รันคำสั่งต่อไปนี้
git-lfs pull --include yi-chat-6b.Q2_K.gguf
หากต้องการดำเนินการอนุมานด้วยโมเดล Yi คุณสามารถใช้วิธีใดวิธีหนึ่งต่อไปนี้
วิธีที่ 1: ทำการอนุมานในเทอร์มินัล
วิธีที่ 2: ดำเนินการอนุมานในเว็บ
หากต้องการคอมไพล์ llama.cpp
โดยใช้ 4 เธรด จากนั้นทำการอนุมาน ให้ไปที่ไดเร็กทอรี llama.cpp
และรันคำสั่งต่อไปนี้
เคล็ดลับ
แทนที่
/Users/yu/yi-chat-6B-GGUF/yi-chat-6b.Q2_K.gguf
ด้วยพาธที่แท้จริงของโมเดลของคุณตามค่าเริ่มต้น โมเดลจะทำงานในโหมดเสร็จสมบูรณ์
สำหรับตัวเลือกการปรับแต่งเอาต์พุตเพิ่มเติม (เช่น พรอมต์ของระบบ อุณหภูมิ การปรับโทษการทำซ้ำ ฯลฯ) ให้รัน
./main -h
เพื่อตรวจสอบคำอธิบายโดยละเอียดและการใช้งาน
make -j4 && ./main -m /Users/yu/yi-chat-6B-GGUF/yi-chat-6b.Q2_K.gguf -p " How do you feed your pet fox? Please answer this question in 6 simple steps:nStep 1: " -n 384 -e
...
How do you feed your pet fox ? Please answer this question in 6 simple steps:
Step 1: Select the appropriate food for your pet fox. You should choose high-quality, balanced prey items that are suitable for their unique dietary needs. These could include live or frozen mice, rats, pigeons, or other small mammals, as well as fresh fruits and vegetables.
Step 2: Feed your pet fox once or twice a day, depending on the species and its individual preferences. Always ensure that they have access to fresh water throughout the day.
Step 3: Provide an appropriate environment for your pet fox. Ensure it has a comfortable place to rest, plenty of space to move around, and opportunities to play and exercise.
Step 4: Socialize your pet with other animals if possible. Interactions with other creatures can help them develop social skills and prevent boredom or stress.
Step 5: Regularly check for signs of illness or discomfort in your fox. Be prepared to provide veterinary care as needed, especially for common issues such as parasites, dental health problems, or infections.
Step 6: Educate yourself about the needs of your pet fox and be aware of any potential risks or concerns that could affect their well-being. Regularly consult with a veterinarian to ensure you are providing the best care.
...
ตอนนี้คุณได้ถามคำถามกับโมเดล Yi สำเร็จแล้วและได้รับคำตอบ! -
หากต้องการเริ่มต้นแชทบอทที่มีน้ำหนักเบาและรวดเร็ว ให้รันคำสั่งต่อไปนี้
cd llama.cpp
./server --ctx-size 2048 --host 0.0.0.0 --n-gpu-layers 64 --model /Users/yu/yi-chat-6B-GGUF/yi-chat-6b.Q2_K.gguf
จากนั้นคุณจะได้ผลลัพธ์ดังนี้:
...
llama_new_context_with_model: n_ctx = 2048
llama_new_context_with_model: freq_base = 5000000.0
llama_new_context_with_model: freq_scale = 1
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M2 Pro
ggml_metal_init: picking default device: Apple M2 Pro
ggml_metal_init: ggml.metallib not found, loading from source
ggml_metal_init: GGML_METAL_PATH_RESOURCES = nil
ggml_metal_init: loading ' /Users/yu/llama.cpp/ggml-metal.metal '
ggml_metal_init: GPU name: Apple M2 Pro
ggml_metal_init: GPU family: MTLGPUFamilyApple8 (1008)
ggml_metal_init: hasUnifiedMemory = true
ggml_metal_init: recommendedMaxWorkingSetSize = 11453.25 MB
ggml_metal_init: maxTransferRate = built-in GPU
ggml_backend_metal_buffer_type_alloc_buffer: allocated buffer, size = 128.00 MiB, ( 2629.44 / 10922.67)
llama_new_context_with_model: KV self size = 128.00 MiB, K (f16): 64.00 MiB, V (f16): 64.00 MiB
ggml_backend_metal_buffer_type_alloc_buffer: allocated buffer, size = 0.02 MiB, ( 2629.45 / 10922.67)
llama_build_graph: non-view tensors processed: 676/676
llama_new_context_with_model: compute buffer total size = 159.19 MiB
ggml_backend_metal_buffer_type_alloc_buffer: allocated buffer, size = 156.02 MiB, ( 2785.45 / 10922.67)
Available slots:
- > Slot 0 - max context: 2048
llama server listening at http://0.0.0.0:8080
หากต้องการเข้าถึงอินเทอร์เฟซแชทบอท ให้เปิดเว็บเบราว์เซอร์แล้วป้อน http://0.0.0.0:8080
ลงในแถบที่อยู่
ป้อนคำถาม เช่น "คุณให้อาหารสุนัขจิ้งจอกสัตว์เลี้ยงของคุณอย่างไร โปรดตอบคำถามนี้ใน 6 ขั้นตอนง่ายๆ" ลงในหน้าต่างแจ้ง แล้วคุณจะได้รับคำตอบที่เกี่ยวข้อง
[ กลับไปด้านบน ⬆️ ]
คุณสามารถสร้างการสาธิต UI บนเว็บสำหรับโมเดล การแชท ของ Yi ได้ (โปรดทราบว่ารุ่นฐานของ Yi ไม่รองรับในรุ่นอาวุโสนี้)
ขั้นตอนที่ 1: เตรียมสภาพแวดล้อมของคุณ
ขั้นตอนที่ 2: ดาวน์โหลดโมเดล Yi
ขั้นตอนที่ 3 หากต้องการเริ่มบริการเว็บในเครื่อง ให้รันคำสั่งต่อไปนี้
python demo/web_demo.py -c < your-model-path >
คุณสามารถเข้าถึง UI ของเว็บได้โดยป้อนที่อยู่ที่ให้ไว้ในคอนโซลลงในเบราว์เซอร์ของคุณ
[ กลับไปด้านบน ⬆️ ]
bash finetune/scripts/run_sft_Yi_6b.sh
เมื่อเสร็จแล้ว คุณสามารถเปรียบเทียบโมเดลที่ปรับแต่งแล้วและโมเดลพื้นฐานด้วยคำสั่งต่อไปนี้:
bash finetune/scripts/run_eval.sh
ตามค่าเริ่มต้น เราใช้ชุดข้อมูลขนาดเล็กจาก BAAI/COIG เพื่อปรับแต่งโมเดลพื้นฐาน คุณยังเตรียมชุดข้อมูลที่กำหนดเองในรูปแบบ jsonl
ต่อไปนี้ได้ด้วย
{ "prompt" : " Human: Who are you? Assistant: " , "chosen" : " I'm Yi. " }
จากนั้นติดตั้งไว้ในคอนเทนเนอร์เพื่อแทนที่อันเริ่มต้น:
docker run -it
-v /path/to/save/finetuned/model/:/finetuned-model
-v /path/to/train.jsonl:/yi/finetune/data/train.json
-v /path/to/eval.jsonl:/yi/finetune/data/eval.json
ghcr.io/01-ai/yi:latest
bash finetune/scripts/run_sft_Yi_6b.sh
ตรวจสอบให้แน่ใจว่าคุณมีคอนดา ถ้าไม่ใช้
mkdir -p ~ /miniconda3
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~ /miniconda3/miniconda.sh
bash ~ /miniconda3/miniconda.sh -b -u -p ~ /miniconda3
rm -rf ~ /miniconda3/miniconda.sh
~ /miniconda3/bin/conda init bash
source ~ /.bashrc
จากนั้นสร้าง conda env:
conda create -n dev_env python=3.10 -y
conda activate dev_env
pip install torch==2.0.1 deepspeed==0.10 tensorboard transformers datasets sentencepiece accelerate ray==2.7
สำหรับรุ่น Yi-6B แนะนำให้ใช้โหนดที่มี GPU 4 ตัว โดยแต่ละตัวมีหน่วยความจำ GPU ขนาดใหญ่กว่า 60GB
สำหรับรุ่น Yi-34B เนื่องจากการใช้เทคนิค Zero-offload จะใช้หน่วยความจำ CPU จำนวนมาก โปรดใช้ความระมัดระวังในการจำกัดจำนวน GPU ในการฝึกแบบละเอียดของ 34B โปรดใช้ CUDA_VISIBLE_DEVICES เพื่อจำกัดจำนวน GPU (ดังแสดงใน scripts/run_sft_Yi_34b.sh)
การตั้งค่าฮาร์ดแวร์ทั่วไปสำหรับการปรับแต่งรุ่น 34B อย่างละเอียดคือโหนดที่มี GPU 8 ตัว (จำกัดอยู่ที่ 4 ตัวในการทำงานโดย CUDA_VISIBLE_DEVICES=0,1,2,3) แต่ละตัวมีหน่วยความจำ GPU ใหญ่กว่า 80GB และหน่วยความจำ CPU ทั้งหมดมีขนาดใหญ่กว่า 900GB
ดาวน์โหลดโมเดลฐาน LLM เป็น MODEL_PATH (6B และ 34B) โฟลเดอร์ทั่วไปของโมเดลจะเป็นดังนี้:
| -- $MODEL_PATH
| | -- config.json
| | -- pytorch_model-00001-of-00002.bin
| | -- pytorch_model-00002-of-00002.bin
| | -- pytorch_model.bin.index.json
| | -- tokenizer_config.json
| | -- tokenizer.model
| | -- ...
ดาวน์โหลดชุดข้อมูลจาก Huggingface ไปยังที่เก็บข้อมูลในเครื่อง DATA_PATH เช่น Dahoas/rm-static
| -- $DATA_PATH
| | -- data
| | | -- train-00000-of-00001-2a1df75c6bce91ab.parquet
| | | -- test-00000-of-00001-8c7c51afc6d45980.parquet
| | -- dataset_infos.json
| | -- README.md
finetune/yi_example_dataset
มีชุดข้อมูลตัวอย่าง ซึ่งแก้ไขจาก BAAI/COIG
| -- $DATA_PATH
| --data
| -- train.jsonl
| -- eval.jsonl
cd
ลงในโฟลเดอร์สคริปต์ คัดลอกและวางสคริปต์แล้วเรียกใช้ ตัวอย่างเช่น:
cd finetune/scripts
bash run_sft_Yi_6b.sh
สำหรับโมเดลฐาน Yi-6B การตั้งค่า training_debug_steps=20 และ num_train_epochs=4 สามารถส่งออกโมเดลแชทได้ ซึ่งจะใช้เวลาประมาณ 20 นาที
สำหรับรุ่นพื้นฐาน Yi-34B จะใช้เวลาในการเริ่มต้นค่อนข้างนาน กรุณาอดทน.
cd finetune/scripts
bash run_eval.sh
แล้วคุณจะเห็นคำตอบจากทั้งรุ่นพื้นฐานและรุ่นที่ได้รับการปรับแต่ง
[ กลับไปด้านบน ⬆️ ]
python quantization/gptq/quant_autogptq.py
--model /base_model
--output_dir /quantized_model
--trust_remote_code
เมื่อเสร็จแล้ว คุณสามารถประเมินโมเดลผลลัพธ์ได้ดังนี้:
python quantization/gptq/eval_quantized_model.py
--model /quantized_model
--trust_remote_code
GPT-Q คือวิธี PTQ (Post-Training Quantization) ช่วยประหยัดหน่วยความจำและให้การเร่งความเร็วที่เป็นไปได้ในขณะที่ยังคงความแม่นยำของโมเดลไว้
โมเดล Yi สามารถวัดปริมาณ GPT-Q ได้โดยไม่ต้องใช้ความพยายามมากนัก เรามีบทช่วยสอนแบบทีละขั้นตอนด้านล่าง
หากต้องการเรียกใช้ GPT-Q เราจะใช้ AutoGPTQ และ exllama และหม้อแปลงแบบกอดได้รวมเอา optimum และ auto-gptq เข้าด้วยกันเพื่อดำเนินการหาปริมาณ GPTQ บนโมเดลภาษา
สคริปต์ quant_autogptq.py
มีไว้เพื่อให้คุณดำเนินการหาปริมาณ GPT-Q:
python quant_autogptq.py --model /base_model
--output_dir /quantized_model --bits 4 --group_size 128 --trust_remote_code
คุณสามารถรันโมเดลเชิงปริมาณได้โดยใช้ eval_quantized_model.py
:
python eval_quantized_model.py --model /quantized_model --trust_remote_code
python quantization/awq/quant_autoawq.py
--model /base_model
--output_dir /quantized_model
--trust_remote_code
เมื่อเสร็จแล้ว คุณสามารถประเมินโมเดลผลลัพธ์ได้ดังนี้:
python quantization/awq/eval_quantized_model.py
--model /quantized_model
--trust_remote_code
AWQ คือวิธี PTQ (Post-Training Quantization) เป็นการวัดปริมาณน้ำหนักบิตต่ำที่มีประสิทธิภาพและแม่นยำ (INT3/4) สำหรับ LLM
โมเดล Yi สามารถวัดปริมาณ AWQ ได้โดยไม่ต้องใช้ความพยายามมากนัก เรามีบทช่วยสอนแบบทีละขั้นตอนด้านล่าง
หากต้องการเรียกใช้ AWQ เราจะใช้ AutoAWQ
สคริปต์ quant_autoawq.py
มีไว้เพื่อให้คุณดำเนินการหาปริมาณ AWQ:
python quant_autoawq.py --model /base_model
--output_dir /quantized_model --bits 4 --group_size 128 --trust_remote_code
คุณสามารถรันโมเดลเชิงปริมาณได้โดยใช้ eval_quantized_model.py
:
python eval_quantized_model.py --model /quantized_model --trust_remote_code
[ กลับไปด้านบน ⬆️ ]
หากคุณต้องการปรับใช้โมเดล Yi ตรวจสอบให้แน่ใจว่าคุณมีคุณสมบัติตรงตามข้อกำหนดด้านซอฟต์แวร์และฮาร์ดแวร์
ก่อนที่จะใช้โมเดลเชิงปริมาณของ Yi ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งซอฟต์แวร์ที่ถูกต้องตามรายการด้านล่าง
แบบอย่าง | ซอฟต์แวร์ |
---|---|
โมเดลเชิงปริมาณของ Yi 4 บิต | AWQ และ CUDA |
โมเดลเชิงปริมาณของ Yi 8 บิต | GPTQ และ CUDA |
ก่อนที่จะปรับใช้ Yi ในสภาพแวดล้อมของคุณ ตรวจสอบให้แน่ใจว่าฮาร์ดแวร์ของคุณตรงตามข้อกำหนดต่อไปนี้
แบบอย่าง | VRAM ขั้นต่ำ | ตัวอย่าง GPU ที่แนะนำ |
---|---|---|
Yi-6B-แชท | 15 กิกะไบต์ | 1 x RTX 3090 (24 กิกะไบต์) 1 x RTX 4090 (24 กิกะไบต์) 1 x A10 (24GB) 1 x A30 (24 กิกะไบต์) |
Yi-6B-แชท-4bits | 4 กิกะไบต์ | 1 x RTX 3060 (12 กิกะไบต์) 1 x RTX 4060 (8 กิกะไบต์) |
Yi-6B-แชท-8bits | 8 กิกะไบต์ | 1 x RTX 3070 (8 กิกะไบต์) 1 x RTX 4060 (8 กิกะไบต์) |
Yi-34B-แชท | 72GB | 4 x RTX 4090 (24 กิกะไบต์) 1 x A800 (80GB) |
Yi-34B-แชท-4bits | 20 กิกะไบต์ | 1 x RTX 3090 (24 กิกะไบต์) 1 x RTX 4090 (24 กิกะไบต์) 1 x A10 (24GB) 1 x A30 (24 กิกะไบต์) 1 x A100 (40 กิกะไบต์) |
Yi-34B-แชท-8bits | 38GB | RTX 3090 จำนวน 2 เครื่อง (24GB) RTX 4090 จำนวน 2 เครื่อง (24GB) 1 x A800 (40GB) |
ด้านล่างนี้คือรายละเอียดข้อกำหนด VRAM ขั้นต่ำภายใต้กรณีการใช้งานแบบแบตช์ต่างๆ
แบบอย่าง | แบทช์=1 | ชุด=4 | ชุด=16 | ชุด=32 |
---|---|---|---|---|
Yi-6B-แชท | 12 กิกะไบต์ | 13 กิกะไบต์ | 15 กิกะไบต์ | 18GB |
Yi-6B-แชท-4bits | 4 กิกะไบต์ | 5 กิกะไบต์ | 7 กิกะไบต์ | 10 กิกะไบต์ |
Yi-6B-แชท-8bits | 7 กิกะไบต์ | 8 กิกะไบต์ | 10 กิกะไบต์ | 14 กิกะไบต์ |
Yi-34B-แชท | 65 กิกะไบต์ | 68GB | 76GB | > 80 กิกะไบต์ |
Yi-34B-แชท-4bits | 19 กิกะไบต์ | 20 กิกะไบต์ | 30 กิกะไบต์ | 40 กิกะไบต์ |
Yi-34B-แชท-8bits | 35 กิกะไบต์ | 37GB | 46GB | 58GB |
แบบอย่าง | VRAM ขั้นต่ำ | ตัวอย่าง GPU ที่แนะนำ |
---|---|---|
ยี่-6B | 15 กิกะไบต์ | 1 x RTX 3090 (24 กิกะไบต์) 1 x RTX 4090 (24 กิกะไบต์) 1 x A10 (24GB) 1 x A30 (24 กิกะไบต์) |
ยี่-6B-200K | 50GB | 1 x A800 (80GB) |
ยี่-9B | 20 กิกะไบต์ | 1 x RTX 4090 (24 กิกะไบต์) |
ยี่-34B | 72GB | 4 x RTX 4090 (24 กิกะไบต์) 1 x A800 (80GB) |
ยี่-34B-200K | 200GB | 4 x A800 (80GB) |
[ กลับไปด้านบน ⬆️ ]
Yi-34B
และ Yi-34B-Chat
นั้นอยู่ที่แนวทางและผลลัพธ์ในการปรับแต่งแบบละเอียดYi-34B
อย่างละเอียดอาจเป็นทางเลือกของคุณYi-34B-Chat
อาจเป็นทางออกที่ดีที่สุดของคุณ