Modelfile adalah rancangan untuk membuat dan berbagi model yang disesuaikan menggunakan Ollama.
Daftar Isi
Format
Format dari Modelfile:
# comment
INSTRUCTION arguments| Instruction | Description |
|---|---|
FROM (wajib) | Menentukan model dasar yang akan digunakan. |
PARAMETER | Mengatur parameter yang akan menentukan cara Ollama menjalankan model. |
TEMPLATE | Template prompt lengkap yang akan dikirim ke model. |
SYSTEM | Menentukan pesan sistem yang akan disetel di dalam template. |
ADAPTER | Menentukan adapter (Q)LoRA yang akan diterapkan ke model. |
LICENSE | Menentukan lisensi hukum yang berlaku. |
MESSAGE | Menentukan riwayat pesan. |
REQUIRES | Menentukan versi minimum Ollama yang dibutuhkan oleh model. |
Contoh
Modelfile Dasar
Contoh Modelfile yang membuat rancangan model mario:
FROM llama3.2
# mengatur suhu (temperature) ke 1 [lebih tinggi = lebih kreatif, lebih rendah = lebih koheren]
PARAMETER temperature 1
# mengatur ukuran jendela konteks ke 4096, ini mengontrol berapa banyak token yang dapat digunakan LLM sebagai konteks untuk menghasilkan token berikutnya
PARAMETER num_ctx 4096
# mengatur pesan sistem kustom untuk menentukan perilaku asisten chat
SYSTEM You are Mario from super mario bros, acting as an assistant.Untuk menggunakan ini:
- Simpan sebagai file (misalnya
Modelfile) ollama create choose-a-model-name -f <location of the file e.g. ./Modelfile>ollama run choose-a-model-name- Mulai menggunakan model!
Untuk melihat Modelfile dari model tertentu, gunakan perintah ollama show --modelfile.
shell
ollama show --modelfile llama3.2# Modelfile yang dihasilkan oleh "ollama show"
# Untuk membuat Modelfile baru berdasarkan yang ini, ganti baris FROM dengan:
# 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"Instruksi
FROM (Wajib)
Instruksi FROM menentukan model dasar yang akan digunakan saat membuat model.
FROM <model name>:<tag>Buat dari model yang sudah ada
FROM llama3.2Daftar model dasar yang tersedia
Model DasarModel tambahan dapat ditemukan di
Buat dari model Safetensors
FROM <model directory>Direktori model harus berisi bobot Safetensors untuk arsitektur yang didukung.
Arsitektur model yang saat ini didukung:
- Llama (termasuk Llama 2, Llama 3, Llama 3.1, dan Llama 3.2)
- Mistral (termasuk Mistral 1, Mistral 2, dan Mixtral)
- Gemma (termasuk Gemma 1 dan Gemma 2)
- Phi3
Buat dari file GGUF
FROM ./ollama-model.ggufLokasi file GGUF harus ditentukan sebagai path absolut atau relatif terhadap lokasi Modelfile.
PARAMETER
Instruksi PARAMETER menentukan parameter yang dapat diatur saat model dijalankan.
PARAMETER <parameter> <parametervalue>Parameter dan Nilai yang Valid
| Parameter | Description | Value Type | Example Usage |
|---|---|---|---|
| num_ctx | Mengatur ukuran jendela konteks yang digunakan untuk menghasilkan token berikutnya. (Default: 2048) | int | num_ctx 4096 |
| repeat_last_n | Mengatur seberapa jauh model akan melihat ke belakang untuk mencegah pengulangan. (Default: 64, 0 = dinonaktifkan, -1 = num_ctx) | int | repeat_last_n 64 |
| repeat_penalty | Mengatur seberapa kuat penalti untuk pengulangan. Nilai yang lebih tinggi (misalnya 1,5) akan memberikan penalti pengulangan lebih kuat, sementara nilai yang lebih rendah (misalnya 0,9) akan lebih toleran. (Default: 1,1) | float | repeat_penalty 1.1 |
| temperature | Suhu (temperature) model. Meningkatkan suhu akan membuat model menjawab lebih kreatif. (Default: 0,8) | float | temperature 0.7 |
| seed | Mengatur seed angka acak yang digunakan untuk generasi. Mengatur ini ke angka tertentu akan membuat model menghasilkan teks yang sama untuk prompt yang sama. (Default: 0) | int | seed 42 |
| stop | Mengatur urutan penghentian (stop sequences) yang akan digunakan. Ketika pola ini ditemukan, LLM akan berhenti menghasilkan teks dan mengembalikan hasil. Beberapa pola penghentian dapat diatur dengan menentukan beberapa parameter stop terpisah dalam modelfile. | string | stop "AI assistant:" |
| num_predict | Jumlah maksimum token yang akan diprediksi saat menghasilkan teks. (Default: -1, generasi tak terbatas) | int | num_predict 42 |
| draft_num_predict | Jumlah maksimum token draf spekulatif yang akan diprediksi per langkah saat model draf tersedia. Model draf terpisah secara default menggunakan 4; tensor MTP tertanam memerlukan pengaturan parameter ini. Atur ke 0 untuk menonaktifkan drafting spekulatif. | int | draft_num_predict 4 |
| top_k | Mengurangi probabilitas menghasilkan teks yang tidak bermakna. Nilai yang lebih tinggi (misalnya 100) akan memberikan jawaban yang lebih beragam, sementara nilai yang lebih rendah (misalnya 10) akan lebih konservatif. (Default: 40) | int | top_k 40 |
| top_p | Bekerja sama dengan top-k. Nilai yang lebih tinggi (misalnya 0,95) akan menghasilkan teks yang lebih beragam, sementara nilai yang lebih rendah (misalnya 0,5) akan menghasilkan teks yang lebih fokus dan konservatif. (Default: 0,9) | float | top_p 0.9 |
| min_p | Alternatif untuk top*p, dan bertujuan untuk memastikan keseimbangan antara kualitas dan keragaman. Parameter p mewakili probabilitas minimum untuk sebuah token untuk dipertimbangkan, relatif terhadap probabilitas token yang paling mungkin. Misalnya, dengan p=0,05 dan token yang paling mungkin memiliki probabilitas 0,9, logits dengan nilai kurang dari 0,045 akan difilter. (Default: 0,0) | float | min_p 0.05 |
TEMPLATE
TEMPLATE adalah template prompt lengkap yang akan diteruskan ke model. Ini dapat mencakup (opsional) pesan sistem, pesan pengguna, dan respons dari model. Catatan: sintaksnya dapat berbeda tergantung model. Template menggunakan sintaks template Go.
Variabel Template
| Variable | Description |
|---|---|
{{.System}} | Pesan sistem yang digunakan untuk menentukan perilaku kustom. |
{{.Prompt}} | Pesan prompt dari pengguna. |
{{.Response}} | Respons dari model. Saat menghasilkan respons, teks setelah variabel ini akan diabaikan. |
TEMPLATE """{{ if .System }}<|im_start|>system
{{ .System }}<|im_end|>
{{ end }}{{ if .Prompt }}<|im_start|>user
{{ .Prompt }}<|im_end|>
{{ end }}<|im_start|>assistant
"""SYSTEM
Instruksi SYSTEM menentukan pesan sistem yang akan digunakan di dalam template, jika berlaku.
SYSTEM """<system message>"""ADAPTER
Instruksi ADAPTER menentukan adapter LoRA yang telah di-fine-tune yang akan diterapkan ke model dasar. Nilai adapter harus berupa path absolut atau path relatif terhadap Modelfile. Model dasar harus ditentukan dengan instruksi FROM. Jika model dasar tidak sama dengan model dasar yang digunakan untuk melatih adapter, perilaku akan menjadi tidak stabil.
Adapter Safetensor
ADAPTER <path to safetensor adapter>Adapter Safetensor yang saat ini didukung:
- Llama (termasuk Llama 2, Llama 3, dan Llama 3.1)
- Mistral (termasuk Mistral 1, Mistral 2, dan Mixtral)
- Gemma (termasuk Gemma 1 dan Gemma 2)
Adapter GGUF
ADAPTER ./ollama-lora.ggufLICENSE
Instruksi LICENSE memungkinkan Anda untuk menentukan lisensi hukum yang berlaku untuk model yang digunakan dengan Modelfile ini saat dibagikan atau didistribusikan.
LICENSE """
<license text>
"""MESSAGE
Instruksi MESSAGE memungkinkan Anda untuk menentukan riwayat pesan yang akan digunakan model saat memberikan respons. Gunakan beberapa perulangan perintah MESSAGE untuk membangun percakapan yang akan memandu model untuk menjawab dengan cara yang serupa.
MESSAGE <role> <message>Peran yang Valid
| Role | Description |
|---|---|
| system | Cara alternatif untuk memberikan pesan SYSTEM ke model. |
| user | Contoh pesan yang mungkin diajukan oleh pengguna. |
| assistant | Contoh pesan yang harus diberikan sebagai respons oleh model. |
Contoh Percakapan
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
Instruksi REQUIRES memungkinkan Anda untuk menentukan versi minimum Ollama yang dibutuhkan oleh model.
REQUIRES <version>Versi harus berupa versi Ollama yang valid (misalnya 0.14.0).
Catatan
Modelfiletidak peka huruf besar/kecil. Pada contoh-contoh, instruksi dengan huruf besar digunakan untuk memudahkan pembedaan dengan argumen.- Instruksi dapat berada dalam urutan apa pun. Pada contoh-contoh, instruksi
FROMditempatkan di awal agar mudah dibaca.