Skip to content

Modelfile เป็นแบบแปลนสำหรับสร้างและแบ่งปันโมเดลที่ปรับแต่งได้โดยใช้ Ollama

สารบัญ

รูปแบบ

รูปแบบของ Modelfile คือ:

# comment
INSTRUCTION arguments
InstructionDescription
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 นี้:

  1. บันทึกเป็นไฟล์ (เช่น Modelfile)
  2. ollama create choose-a-model-name -f <location of the file e.g. ./Modelfile>
  3. ollama run choose-a-model-name
  4. เริ่มใช้งานโมเดล!

เพื่อดู 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 }}&lt;|start_header_id|&gt;system&lt;|end_header_id|&gt;

{{ .System }}&lt;|eot_id|&gt;{{ end }}{{ if .Prompt }}&lt;|start_header_id|&gt;user&lt;|end_header_id|&gt;

{{ .Prompt }}&lt;|eot_id|&gt;{{ end }}&lt;|start_header_id|&gt;assistant&lt;|end_header_id|&gt;

{{ .Response }}&lt;|eot_id|&gt;""""
PARAMETER stop "&lt;|start_header_id|&gt;"
PARAMETER stop "&lt;|end_header_id|&gt;"
PARAMETER stop "&lt;|eot_id|&gt;"
PARAMETER stop "&lt;|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>

พารามิเตอร์และค่าที่ถูกต้อง

ParameterDescriptionValue TypeExample Usage
num_ctxตั้งค่าขนาดของหน้าต่างบริบทที่ใช้สร้างโทเคนถัดไป (ค่าเริ่มต้น: 2048)intnum_ctx 4096
repeat_last_nตั้งค่าจุดย้อนหลังที่โมเดลจะดูเพื่อป้องกันการทำซ้ำ (ค่าเริ่มต้น: 64, 0 = ปิดใช้งาน, -1 = num_ctx)intrepeat_last_n 64
repeat_penaltyตั้งค่าความเข้มของการลงโทษการทำซ้ำ ค่าสูงกว่า (เช่น 1.5) จะลงโทษการทำซ้ำได้เข้มงวดกว่า ในขณะที่ค่าต่ำกว่า (เช่น 0.9) จะผ่อนปรนกว่า (ค่าเริ่มต้น: 1.1)floatrepeat_penalty 1.1
temperatureอุณหภูมิของโมเดล การเพิ่มอุณหภูมิจะทำให้โมเดลตอบได้สร้างสรรค์มากขึ้น (ค่าเริ่มต้น: 0.8)floattemperature 0.7
seedตั้งค่า seed ตัวเลขสุ่มที่จะใช้สำหรับการสร้าง การตั้งค่านี้เป็นตัวเลขเฉพาะจะทำให้โมเดลสร้างข้อความเดียวกันสำหรับ prompt เดียวกัน (ค่าเริ่มต้น: 0)intseed 42
stopตั้งค่าลำดับการหยุดที่จะใช้ เมื่อพบรูปแบบนี้ LLM จะหยุดสร้างข้อความและส่งผลลัพธ์กลับ สามารถตั้งค่าลำดับการหยุดหลายรูปแบบได้โดยระบุพารามิเตอร์ stop แยกหลายตัวใน Modelfilestringstop "AI assistant:"
num_predictจำนวนโทเคนสูงสุดที่จะทำนายเมื่อสร้างข้อความ (ค่าเริ่มต้น: -1, การสร้างไม่จำกัด)intnum_predict 42
draft_num_predictจำนวนโทเคน speculative draft สูงสุดที่จะทำนายต่อขั้นตอนเมื่อมีโมเดล draft ที่ใช้ได้ โมเดล draft แยกมีค่าเริ่มต้นเป็น 4; เทนเซอร์ MTP ที่ฝังตัวต้องการการตั้งค่าพารามิเตอร์นี้ ตั้งเป็น 0 เพื่อปิดใช้งานการสร้าง speculative draftintdraft_num_predict 4
top_kลดความน่าจะเป็นของการสร้างข้อความไร้สาระ ค่าสูงกว่า (เช่น 100) จะให้คำตอบที่มีความหลากหลายมากขึ้น ในขณะที่ค่าต่ำกว่า (เช่น 10) จะให้ผลที่ระมัดระวังมากขึ้น (ค่าเริ่มต้น: 40)inttop_k 40
top_pทำงานร่วมกับ top-k ค่าสูงกว่า (เช่น 0.95) จะนำไปสู่ข้อความที่มีความหลากหลายมากขึ้น ในขณะที่ค่าต่ำกว่า (เช่น 0.5) จะสร้างข้อความที่เน้นและระมัดระวังมากขึ้น (ค่าเริ่มต้น: 0.9)floattop_p 0.9
min_pเป็นทางเลือกแทน top-p และมีเป้าหมายเพื่อให้สมดุลระหว่างคุณภาพและความหลากหลาย พารามิเตอร์ p แทนความน่าจะเป็นขั้นต่ำของโทเคนที่จะถูกพิจารณา เทียบกับความน่าจะเป็นของโทเคนที่มีความน่าจะเป็นสูงสุด ตัวอย่าง ด้วย p=0.05 และโทเคนที่มีความน่าจะเป็นสูงสุดมีค่าความน่าจะเป็น 0.9 ล็อจิทที่มีค่าน้อยกว่า 0.045 จะถูกกรองออก (ค่าเริ่มต้น: 0.0)floatmin_p 0.05

เทมเพลต

TEMPLATE คือเทมเพลต prompt แบบเต็มที่จะส่งไปยังโมเดล อาจรวมถึง (เป็นทางเลือก) ข้อความระบบ ข้อความของผู้ใช้ และการตอบกลับจากโมเดล หมายเหตุ: ไวยากรณ์อาจแตกต่างกันตามโมเดล เทมเพลตใช้ Go ไวยากรณ์เทมเพลต

ตัวแปรเทมเพลต

VariableDescription
&#123;&#123;.System&#125;&#125;ข้อความระบบที่ใช้เพื่อระบุพฤติกรรมที่กำหนดเอง
&#123;&#123;.Prompt&#125;&#125;ข้อความ prompt ของผู้ใช้
&#123;&#123;.Response&#125;&#125;การตอบกลับจากโมเดล เมื่อสร้างการตอบกลับ ข้อความที่อยู่หลังตัวแปรนี้จะถูกยกเว้น
TEMPLATE """{{ if .System }}&lt;|im_start|&gt;system
{{ .System }}&lt;|im_end|&gt;
{{ end }}{{ if .Prompt }}&lt;|im_start|&gt;user
{{ .Prompt }}&lt;|im_end|&gt;
{{ end }}&lt;|im_start|&gt;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>

บทบาทที่ถูกต้อง

RoleDescription
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 yes

REQUIRES

คำสั่ง REQUIRES ช่วยให้คุณสามารถระบุเวอร์ชันขั้นต่ำของ Ollama ที่โมเดลต้องการ

REQUIRES <version>

เวอร์ชันควรเป็นเวอร์ชัน Ollama ที่ถูกต้อง (เช่น 0.14.0)

หมายเหตุ

  • Modelfile ไม่ไว้อักษร大写เล็ก ในตัวอย่าง คำสั่งจะใช้ตัวอักษร大写เพื่อให้ง่ายต่อการแยกจากอาร์กิวเมนต์
  • คำสั่งสามารถเรียงลำดับได้อย่างไรก็ได้ ในตัวอย่าง คำสั่ง FROM อยู่ตำแหน่งแรกเพื่อให้อ่านง่าย