Modelfile เป็นแบบแปลนสำหรับสร้างและแบ่งปันโมเดลที่ปรับแต่งได้โดยใช้ Ollama
สารบัญ
รูปแบบ
รูปแบบของ Modelfile คือ:
# comment
INSTRUCTION arguments| Instruction | Description |
|---|---|
FROM (จำเป็น) | กำหนดโมเดลพื้นฐานที่จะใช้ |
PARAMETER | ตั้งค่าพารามิเตอร์สำหรับการทำงานของโมเดลโดย Ollama |
TEMPLATE | เทมเพลต prompt แบบเต็มที่จะส่งไปยังโมเดล |
SYSTEM | กำหนดข้อความระบบที่จะตั้งในเทมเพลต |
ADAPTER | กำหนดอะแดปเตอร์ (Q)LoRA ที่จะนำไปใช้กับโมเดล |
LICENSE | กำหนดลิขสิทธิ์ทางกฎหมาย |
MESSAGE | กำหนดประวัติข้อความ |
REQUIRES | กำหนดเวอร์ชันขั้นต่ำของ Ollama ที่โมเดลต้องการ |
ตัวอย่าง
Modelfile พื้นฐาน
ตัวอย่างของ Modelfile ที่สร้างแบบแปลนโมเดลมาริโอ:
FROM llama3.2
# ตั้งค่าอุณหภูมิเป็น 1 [ค่าสูงกว่าจะให้ผลสร้างสรรค์มากขึ้น ค่าต่ำกว่าจะให้ผลสอดคล้องกันมากขึ้น]
PARAMETER temperature 1
# ตั้งขนาดหน้าต่างบริบทเป็น 4096 ค่านี้ควบคุมจำนวนโทเค็นที่ LLM สามารถใช้เป็นบริบทเพื่อสร้างโทเคนถัดไป
PARAMETER num_ctx 4096
# ตั้งข้อความระบบที่กำหนดเองเพื่อระบุพฤติกรรมของผู้ช่วยสนทนา
SYSTEM You are Mario from super mario bros, acting as an assistant.เพื่อใช้ Modelfile นี้:
- บันทึกเป็นไฟล์ (เช่น
Modelfile) ollama create choose-a-model-name -f <location of the file e.g. ./Modelfile>ollama run choose-a-model-name- เริ่มใช้งานโมเดล!
เพื่อดู Modelfile ของโมเดลที่กำหนด ให้ใช้คำสั่ง ollama show --modelfile
shell
ollama show --modelfile llama3.2# Modelfile ที่สร้างโดยคำสั่ง "ollama show"
# เพื่อสร้าง Modelfile ใหม่บนพื้นฐานของนี้ ให้แทนที่บรรทัด FROM ด้วย:
# FROM llama3.2:latest
FROM /Users/pdevine/.ollama/models/blobs/sha256-00e1317cbf74d901080d7100f57580ba8dd8de57203072dc6f668324ba545f29
TEMPLATE """{{ if .System }}<|start_header_id|>system<|end_header_id|>
{{ .System }}<|eot_id|>{{ end }}{{ if .Prompt }}<|start_header_id|>user<|end_header_id|>
{{ .Prompt }}<|eot_id|>{{ end }}<|start_header_id|>assistant<|end_header_id|>
{{ .Response }}<|eot_id|>""""
PARAMETER stop "<|start_header_id|>"
PARAMETER stop "<|end_header_id|>"
PARAMETER stop "<|eot_id|>"
PARAMETER stop "<|reserved_special_token"คำสั่ง
FROM (จำเป็น)
คำสั่ง FROM กำหนดโมเดลพื้นฐานที่จะใช้เมื่อสร้างโมเดล
FROM <model name>:<tag>สร้างจากโมเดลที่มีอยู่แล้ว
FROM llama3.2รายการโมเดลพื้นฐานที่มีอยู่
โมเดลพื้นฐานสามารถพบโมเดลเพิ่มเติมได้ที่
สร้างจากโมเดล Safetensors
FROM <model directory>ไดเรกทอรีโมเดลควรจะมีน้ำหนัก Safetensors สำหรับสถาปัตยกรรมที่รองรับ
สถาปัตยกรรมโมเดลที่รองรับในปัจจุบัน:
- Llama (รวมถึง Llama 2, Llama 3, Llama 3.1, และ Llama 3.2)
- Mistral (รวมถึง Mistral 1, Mistral 2, และ Mixtral)
- Gemma (รวมถึง Gemma 1 และ Gemma 2)
- Phi3
สร้างจากไฟล์ GGUF
FROM ./ollama-model.ggufตำแหน่งไฟล์ GGUF ควรระบุเป็นเส้นทาง absolute หรือเป็นเส้นทางสัมพันธ์กับตำแหน่งของ Modelfile
พารามิเตอร์
คำสั่ง PARAMETER กำหนดพารามิเตอร์ที่สามารถตั้งค่าได้เมื่อรันโมเดล
PARAMETER <parameter> <parametervalue>พารามิเตอร์และค่าที่ถูกต้อง
| Parameter | Description | Value Type | Example Usage |
|---|---|---|---|
| num_ctx | ตั้งค่าขนาดของหน้าต่างบริบทที่ใช้สร้างโทเคนถัดไป (ค่าเริ่มต้น: 2048) | int | num_ctx 4096 |
| repeat_last_n | ตั้งค่าจุดย้อนหลังที่โมเดลจะดูเพื่อป้องกันการทำซ้ำ (ค่าเริ่มต้น: 64, 0 = ปิดใช้งาน, -1 = num_ctx) | int | repeat_last_n 64 |
| repeat_penalty | ตั้งค่าความเข้มของการลงโทษการทำซ้ำ ค่าสูงกว่า (เช่น 1.5) จะลงโทษการทำซ้ำได้เข้มงวดกว่า ในขณะที่ค่าต่ำกว่า (เช่น 0.9) จะผ่อนปรนกว่า (ค่าเริ่มต้น: 1.1) | float | repeat_penalty 1.1 |
| temperature | อุณหภูมิของโมเดล การเพิ่มอุณหภูมิจะทำให้โมเดลตอบได้สร้างสรรค์มากขึ้น (ค่าเริ่มต้น: 0.8) | float | temperature 0.7 |
| seed | ตั้งค่า seed ตัวเลขสุ่มที่จะใช้สำหรับการสร้าง การตั้งค่านี้เป็นตัวเลขเฉพาะจะทำให้โมเดลสร้างข้อความเดียวกันสำหรับ prompt เดียวกัน (ค่าเริ่มต้น: 0) | int | seed 42 |
| stop | ตั้งค่าลำดับการหยุดที่จะใช้ เมื่อพบรูปแบบนี้ LLM จะหยุดสร้างข้อความและส่งผลลัพธ์กลับ สามารถตั้งค่าลำดับการหยุดหลายรูปแบบได้โดยระบุพารามิเตอร์ stop แยกหลายตัวใน Modelfile | string | stop "AI assistant:" |
| num_predict | จำนวนโทเคนสูงสุดที่จะทำนายเมื่อสร้างข้อความ (ค่าเริ่มต้น: -1, การสร้างไม่จำกัด) | int | num_predict 42 |
| draft_num_predict | จำนวนโทเคน speculative draft สูงสุดที่จะทำนายต่อขั้นตอนเมื่อมีโมเดล draft ที่ใช้ได้ โมเดล draft แยกมีค่าเริ่มต้นเป็น 4; เทนเซอร์ MTP ที่ฝังตัวต้องการการตั้งค่าพารามิเตอร์นี้ ตั้งเป็น 0 เพื่อปิดใช้งานการสร้าง speculative draft | int | draft_num_predict 4 |
| top_k | ลดความน่าจะเป็นของการสร้างข้อความไร้สาระ ค่าสูงกว่า (เช่น 100) จะให้คำตอบที่มีความหลากหลายมากขึ้น ในขณะที่ค่าต่ำกว่า (เช่น 10) จะให้ผลที่ระมัดระวังมากขึ้น (ค่าเริ่มต้น: 40) | int | top_k 40 |
| top_p | ทำงานร่วมกับ top-k ค่าสูงกว่า (เช่น 0.95) จะนำไปสู่ข้อความที่มีความหลากหลายมากขึ้น ในขณะที่ค่าต่ำกว่า (เช่น 0.5) จะสร้างข้อความที่เน้นและระมัดระวังมากขึ้น (ค่าเริ่มต้น: 0.9) | float | top_p 0.9 |
| min_p | เป็นทางเลือกแทน top-p และมีเป้าหมายเพื่อให้สมดุลระหว่างคุณภาพและความหลากหลาย พารามิเตอร์ p แทนความน่าจะเป็นขั้นต่ำของโทเคนที่จะถูกพิจารณา เทียบกับความน่าจะเป็นของโทเคนที่มีความน่าจะเป็นสูงสุด ตัวอย่าง ด้วย p=0.05 และโทเคนที่มีความน่าจะเป็นสูงสุดมีค่าความน่าจะเป็น 0.9 ล็อจิทที่มีค่าน้อยกว่า 0.045 จะถูกกรองออก (ค่าเริ่มต้น: 0.0) | float | min_p 0.05 |
เทมเพลต
TEMPLATE คือเทมเพลต prompt แบบเต็มที่จะส่งไปยังโมเดล อาจรวมถึง (เป็นทางเลือก) ข้อความระบบ ข้อความของผู้ใช้ และการตอบกลับจากโมเดล หมายเหตุ: ไวยากรณ์อาจแตกต่างกันตามโมเดล เทมเพลตใช้ Go ไวยากรณ์เทมเพลต
ตัวแปรเทมเพลต
| Variable | Description |
|---|---|
{{.System}} | ข้อความระบบที่ใช้เพื่อระบุพฤติกรรมที่กำหนดเอง |
{{.Prompt}} | ข้อความ prompt ของผู้ใช้ |
{{.Response}} | การตอบกลับจากโมเดล เมื่อสร้างการตอบกลับ ข้อความที่อยู่หลังตัวแปรนี้จะถูกยกเว้น |
TEMPLATE """{{ if .System }}<|im_start|>system
{{ .System }}<|im_end|>
{{ end }}{{ if .Prompt }}<|im_start|>user
{{ .Prompt }}<|im_end|>
{{ end }}<|im_start|>assistant
"""ระบบ
คำสั่ง SYSTEM กำหนดข้อความระบบที่จะใช้ในเทมเพลต หากมีผลใช้ได้
SYSTEM """<system message>"""อะแดปเตอร์
คำสั่ง ADAPTER กำหนดอะแดปเตอร์ LoRA ที่ปรับแต่งอย่างละเอียดที่จะนำไปใช้กับโมเดลพื้นฐาน ค่าของอะแดปเตอร์ควรเป็นเส้นทาง absolute หรือเส้นทางสัมพันธ์กับ Modelfile โมเดลพื้นฐานควรระบุด้วยคำสั่ง FROM หากโมเดลพื้นฐานไม่ตรงกับโมเดลพื้นฐานที่อะแดปเตอร์ถูกปรับแต่งจาก พฤติกรรมจะไม่สม่ำเสมอ
อะแดปเตอร์ Safetensor
ADAPTER <path to safetensor adapter>อะแดปเตอร์ Safetensor ที่รองรับในปัจจุบัน:
- Llama (รวมถึง Llama 2, Llama 3, และ Llama 3.1)
- Mistral (รวมถึง Mistral 1, Mistral 2, และ Mixtral)
- Gemma (รวมถึง Gemma 1 และ Gemma 2)
อะแดปเตอร์ GGUF
ADAPTER ./ollama-lora.ggufลิขสิทธิ์
คำสั่ง LICENSE ช่วยให้คุณสามารถระบุลิขสิทธิ์ทางกฎหมายที่ใช้สำหรับโมเดลที่ใช้กับ Modelfile นี้ในการแบ่งปันหรือเผยแพร่
LICENSE """
<license text>
"""ข้อความ
คำสั่ง MESSAGE ช่วยให้คุณสามารถระบุประวัติข้อความสำหรับโมเดลที่จะใช้เมื่อตอบกลับ ใช้คำสั่ง MESSAGE หลายครั้งเพื่อสร้างบทสนทนาที่จะแนะนำโมเดลให้ตอบในลักษณะที่คล้ายกัน
MESSAGE <role> <message>บทบาทที่ถูกต้อง
| Role | Description |
|---|---|
| system | วิธีอื่นในการให้ข้อความ SYSTEM สำหรับโมเดล |
| user | ข้อความตัวอย่างของผู้ใช้ที่อาจถามได้ |
| assistant | ข้อความตัวอย่างของวิธีการตอบกลับของโมเดล |
ตัวอย่างบทสนทนา
MESSAGE user Is Toronto in Canada?
MESSAGE assistant yes
MESSAGE user Is Sacramento in Canada?
MESSAGE assistant no
MESSAGE user Is Ontario in Canada?
MESSAGE assistant yesREQUIRES
คำสั่ง REQUIRES ช่วยให้คุณสามารถระบุเวอร์ชันขั้นต่ำของ Ollama ที่โมเดลต้องการ
REQUIRES <version>เวอร์ชันควรเป็นเวอร์ชัน Ollama ที่ถูกต้อง (เช่น 0.14.0)
หมายเหตุ
Modelfileไม่ไว้อักษร大写เล็ก ในตัวอย่าง คำสั่งจะใช้ตัวอักษร大写เพื่อให้ง่ายต่อการแยกจากอาร์กิวเมนต์- คำสั่งสามารถเรียงลำดับได้อย่างไรก็ได้ ในตัวอย่าง คำสั่ง
FROMอยู่ตำแหน่งแรกเพื่อให้อ่านง่าย