ฉันได้เริ่มทำงานเกี่ยวกับการปรับใช้ไลบรารีใหม่ที่นี่: FastTensors
โปรดติดดาวหากคุณต้องการเห็นการใช้งานที่เข้ากันได้กับ GGML ใน Pure Go
โปรดตรวจสอบโครงการ Booster ที่เกี่ยวข้องของฉัน
เราฝันถึงโลกที่แฮ็กเกอร์ ML เพื่อนๆ กำลังเจาะโมเดล GPT ขนาดใหญ่จริงๆ ในโฮมแล็บของพวกเขา โดยไม่ต้องมีคลัสเตอร์ GPU สิ้นเปลืองเงินมหาศาล $$$
รหัสของโครงการขึ้นอยู่กับกรอบงาน ggml.cpp ในตำนานของ Georgi Gerganov ที่เขียนด้วยภาษา C ++ โดยมีทัศนคติต่อประสิทธิภาพและความสง่างามแบบเดียวกัน
เราหวังว่าการใช้ Golang แทนภาษา ที่ทรงพลัง แต่ ระดับต่ำเกินไป จะช่วยให้มีการนำไปใช้มากขึ้น
ขั้นแรก รับและแปลงโมเดล LLaMA ดั้งเดิมด้วยตัวคุณเอง หรือเพียงแค่ดาวน์โหลดโมเดลที่พร้อมสำหรับร็อค:
ลามา-7B: ลามา-7b-fp32.bin
LLaMA-13B: llama-13b-fp32.bin
ทั้งสองรุ่นเก็บน้ำหนัก FP32 ดังนั้นคุณจะต้องมี RAM อย่างน้อย 32Gb (ไม่ใช่ VRAM หรือ GPU RAM) สำหรับ LLaMA-7B เพิ่มเป็นสองเท่าเป็น 64Gb สำหรับ LLaMA-13B
จากนั้น สร้างไบนารีของแอปจากแหล่งที่มา (ดูคำแนะนำด้านล่าง) หรือเพียงดาวน์โหลดอันที่สร้างไว้แล้ว:
Windows: llama-go-v1.4.0.exe
MacOS: llama-go-v1.4.0-macos
ลินุกซ์: llama-go-v1.4.0-linux
ตอนนี้คุณมีทั้งไฟล์ปฏิบัติการและโมเดลแล้ว ลองด้วยตัวคุณเอง:
llama-go-v1.4.0-macos
--model ~ /models/llama-7b-fp32.bin
--prompt " Why Golang is so popular? "
--prompt Text prompt from user to feed the model input
--model Path and file name of converted .bin LLaMA model [ llama-7b-fp32.bin, etc ]
--server Start in Server Mode acting as REST API endpoint
--host Host to allow requests from in Server Mode [ localhost by default ]
--port Port listen to in Server Mode [ 8080 by default ]
--pods Maximum pods or units of parallel execution allowed in Server Mode [ 1 by default ]
--threads Adjust to the number of CPU cores you want to use [ all cores by default ]
--context Context size in tokens [ 1024 by default ]
--predict Number of tokens to predict [ 512 by default ]
--temp Model temperature hyper parameter [ 0.5 by default ]
--silent Hide welcome logo and other output [ shown by default ]
--chat Chat with user in interactive mode instead of compute over static prompt
--profile Profe CPU performance while running and store results to cpu.pprof file
--avx Enable x64 AVX2 optimizations for Intel and AMD machines
--neon Enable ARM NEON optimizations for Apple Macs and ARM server
LLaMA.go ฝังเซิร์ฟเวอร์ HTTP แบบสแตนด์อโลนซึ่งเปิดเผย REST API หากต้องการเปิดใช้งาน ให้เรียกใช้แอปด้วยแฟล็กพิเศษ:
llama-go-v1.4.0-macos
--model ~ /models/llama-7b-fp32.bin
--server
--host 127.0.0.1
--port 8080
--pods 4
--threads 4
จำนวนคอร์ CPU ที่พร้อมใช้งาน จำนวนคำขอที่คุณต้องการประมวลผลแบบขนาน ความเร็วในการรับคำตอบ เลือกพารามิเตอร์ พ็อด และ เธรด อย่างชาญฉลาด ขึ้นอยู่กับขนาดของรุ่น
พ็อด คืออินสแตนซ์การอนุมานจำนวนหนึ่งที่อาจทำงานพร้อมกัน
พารามิเตอร์ Threads จะกำหนดจำนวนคอร์ที่จะใช้สำหรับคณิตศาสตร์เทนเซอร์ภายในพ็อด
ตัวอย่างเช่น หากคุณมีเครื่องที่มีคอร์ฮาร์ดแวร์ 16 คอร์ที่สามารถรันไฮเปอร์เธรด 32 เธรดแบบขนานได้ คุณอาจได้ผลลัพธ์ดังนี้:
--server --pods 4 --threads 8
เมื่อไม่มีพ็อดว่างที่จะจัดการคำขอที่มาถึง พ็อดนั้นจะถูกวางไว้ในคิวรอและเริ่มต้นเมื่อพ็อดบางอันทำงานเสร็จสิ้น
ส่งคำขอ POST (กับบุรุษไปรษณีย์) ไปยังที่อยู่เซิร์ฟเวอร์ของคุณด้วย JSON ที่มี UUID v4 ที่ไม่ซ้ำกันและพร้อมท์:
{
"id" : " 5fb8ebd0-e0c9-4759-8f7d-35590f6c9fc3 " ,
"prompt" : " Why Golang is so popular? "
}
ส่งคำขอ GET (พร้อมบุรุษไปรษณีย์หรือเบราว์เซอร์) ไปยัง URL เช่น http://host:port/jobs/status/:id
GET http://localhost:8080/jobs/status/5fb8ebd0-e0c9-4759-8f7d-35590f6c9fcb
ส่งคำขอ GET (ด้วยบุรุษไปรษณีย์หรือเบราว์เซอร์) ไปยัง URL เช่น http://host:port/jobs/:id
GET http://localhost:8080/jobs/5fb8ebd0-e0c9-4759-8f7d-35590f6c9fcb
ขั้นแรก ติดตั้ง Golang และ git (คุณจะต้องดาวน์โหลดตัวติดตั้งในกรณีของ Windows)
brew install git
brew install golang
จากนั้นโคลน repo และเข้าสู่โฟลเดอร์โปรเจ็กต์:
git clone https://github.com/gotzmann/llama.go.git
cd llama.go
Go magic บางตัวเพื่อติดตั้งการพึ่งพาภายนอก:
go mod tidy
go mod vendor
ตอนนี้เราพร้อมที่จะสร้างไบนารีจากซอร์สโค้ดแล้ว:
go build -o llama-go-v1.exe -ldflags " -s -w " main.go
1) ฉันสามารถหาซื้อโมเดล LLaMA ดั้งเดิมได้จากที่ไหน?
ติดต่อ Meta โดยตรงหรือเพียงแค่มองหาทางเลือก torrent อื่น ๆ
2) จะแปลงไฟล์ LLaMA ดั้งเดิมเป็นรูปแบบที่รองรับได้อย่างไร
วางไฟล์ PyTorch FP16 ดั้งเดิมลงในไดเร็กทอรี models จากนั้นแปลงด้วยคำสั่ง:
python3 ./scripts/convert.py ~ /models/LLaMA/7B/ 0