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 อยู่ตำแหน่งแรกเพื่อให้อ่านง่าย