Ollama kullanarak özelleştirilmiş modeller oluşturmak ve paylaşmak için bir Modelfile, taslak görevi görür.
Table of Contents
Format
Modelfile'ın biçimi:
# yorum
YÖNERGE argümanlar| Yönerge | Açıklama |
|---|---|
FROM (gerekli) | Kullanılacak temel modeli tanımlar. |
PARAMETER | Ollama'nın modeli çalıştırması için kullanılacak parametreleri ayarlar. |
TEMPLATE | Modele gönderilecek tam istem şablonudur. |
SYSTEM | Şablonda ayarlanacak sistem mesajını belirtir. |
ADAPTER | Modele uygulanacak (Q)LoRA adaptörlerini tanımlar. |
LICENSE | Yasal lisansı belirtir. |
MESSAGE | Mesaj geçmişini belirtir. |
REQUIRES | Modelin gerektirdiği minimum Ollama sürümünü belirtir. |
Örnekler
Temel Modelfile
Bir Mario taslağı oluşturan bir Modelfile örneği:
FROM llama3.2
# sıcaklığı 1 olarak ayarlar [daha yüksek değer daha yaratıcı, daha düşük değer daha tutarlı olur]
PARAMETER temperature 1
# bağlam penceresi boyutunu 4096 olarak ayarlar, bu LLM'in bir sonraki jetonu üretmek için bağlam olarak kullanabileceği jeton sayısını kontrol eder
PARAMETER num_ctx 4096
# sohbet asistanının davranışını belirtmek için özel bir sistem mesajı ayarlar
SYSTEM You are Mario from super mario bros, acting as an assistant.Bunu kullanmak için:
- Bir dosya olarak kaydedin (ör.
Modelfile) ollama create seçtiğiniz-model-adı -f <dosyanın konumu örn. ./Modelfile>ollama run seçtiğiniz-model-adı- Modeli kullanmaya başlayın!
Belirli bir modelin Modelfile'ını görüntülemek için ollama show --modelfile komutunu kullanın.
shell
ollama show --modelfile llama3.2# Modelfile, "ollama show" tarafından oluşturuldu
# Bunun temelinde yeni bir Modelfile oluşturmak için FROM satırını şununla değiştirin:
# 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"Yönergeler
FROM (Gerekli)
FROM yönergesi, bir model oluştururken kullanılacak temel modeli tanımlar.
FROM <model adı>:<etiket>Mevcut bir modelden oluştur
FROM llama3.2Kullanılabilir temel modellerin listesi
Temel ModellerEk modeller burada bulunabilir
Bir Safetensors modelinden oluştur
FROM <model dizini>Model dizini, desteklenen bir mimari için Safetensors ağırlıklarını içermelidir.
Şu anda desteklenen model mimarileri:
- Llama (Llama 2, Llama 3, Llama 3.1 ve Llama 3.2 dahil)
- Mistral (Mistral 1, Mistral 2 ve Mixtral dahil)
- Gemma (Gemma 1 ve Gemma 2 dahil)
- Phi3
Bir GGUF dosyasından oluştur
FROM ./ollama-model.ggufGGUF dosyasının konumu, mutlak bir yol olarak veya Modelfile konumuna göreceli olarak belirtilmelidir.
PARAMETER
PARAMETER yönergesi, model çalıştırıldığında ayarlanabilecek bir parametreyi tanımlar.
PARAMETER <parametre> <parametre değeri>Geçerli Parametreler ve Değerler
| Parametre | Açıklama | Değer Türü | Örnek Kullanım |
|---|---|---|---|
| num_ctx | Bir sonraki jetonu üretmek için kullanılan bağlam penceresinin boyutunu ayarlar. (Varsayılan: 2048) | int | num_ctx 4096 |
| repeat_last_n | Tekrarı önlemek için modelin ne kadar geriye bakacağını ayarlar. (Varsayılan: 64, 0 = devre dışı, -1 = num_ctx) | int | repeat_last_n 64 |
| repeat_penalty | Tekrarları ne kadar şiddetle cezalandıracağını ayarlar. Daha yüksek bir değer (ör. 1.5) tekrarları daha şiddetle cezalandırırken, daha düşük bir değer (ör. 0.9) daha toleranslı olur. (Varsayılan: 1.1) | float | repeat_penalty 1.1 |
| temperature | Modelin sıcaklığı. Sıcaklığı artırmak, modelin daha yaratıcı cevaplar vermesini sağlar. (Varsayılan: 0.8) | float | temperature 0.7 |
| seed | Üretim için kullanılacak rastgele sayı tohumunu ayarlar. Bunu belirli bir sayıya ayarlamak, modelin aynı istem için aynı metni üretmesini sağlar. (Varsayılan: 0) | int | seed 42 |
| stop | Kullanılacak durdurma dizilerini ayarlar. Bu desenle karşılaşıldığında LLM metin üretmeyi durdurur ve döner. Bir Modelfile'da birden fazla ayrı stop parametresi belirterek birden fazla durdurma desenleri ayarlanabilir. | string | stop "AI assistant:" |
| num_predict | Metin üretirken tahmin edilecek maksimum jeton sayısı. (Varsayılan: -1, sonsuz üretim) | int | num_predict 42 |
| draft_num_predict | Bir taslak model mevcut olduğunda her adımda tahmin edilecek spekülatif taslak jetonlarının maksimum sayısı. Ayrı taslak modellerin varsayılan değeri 4'tür; gömülü MTP tensörleri bu parametrenin ayarlanmasını gerektirir. Spekülatif taslamayı devre dışı bırakmak için 0 olarak ayarlayın. | int | draft_num_predict 4 |
| top_k | Anlamsız metin üretme olasılığını azaltır. Daha yüksek bir değer (ör. 100) daha çeşitli cevaplar verirken, daha düşük bir değer (ör. 10) daha muhafazakâr olur. (Varsayılan: 40) | int | top_k 40 |
| top_p | Top-k ile birlikte çalışır. Daha yüksek bir değer (ör. 0,95) daha çeşitli metinler üretirken, daha düşük bir değer (ör. 0,5) daha odaklı ve muhafazakâr metinler üretir. (Varsayılan: 0.9) | float | top_p 0.9 |
| min_p | top*p'ye alternatif olarak, kalite ve çeşitlilik arasında bir denge sağlamayı amaçlar. p parametresi, en olası jetonun olasılığına göre, bir jetonun değerlendirilmesi için minimum olasılığı temsil eder. Örneğin, p=0,05 ve en olası jetonun olasılığı 0,9 olduğunda, 0,045'ten daha düşük değere sahip logitler filtrelenir. (Varsayılan: 0.0) | float | min_p 0.05 |
TEMPLATE
Modele iletilmesi gereken tam istem şablonunun TEMPLATE'i. İsteğe bağlı olarak bir sistem mesajı, kullanıcının mesajı ve modelden gelen yanıtı içerebilir. Not: sözdizimi modele özgü olabilir. Şablonlar, Go şablon sözdizimini kullanır.
Şablon Değişkenleri
| Değişken | Açıklama |
|---|---|
{{.System}} | Özel davranışı belirtmek için kullanılan sistem mesajı. |
{{.Prompt}} | Kullanıcının istem mesajı. |
{{.Response}} | Modelden gelen yanıt. Bir yanıt üretilirken bu değişkenden sonraki metin çıkarılır. |
TEMPLATE """{{ if .System }}<|im_start|>system
{{ .System }}<|im_end|>
{{ end }}{{ if .Prompt }}<|im_start|>user
{{ .Prompt }}<|im_end|>
{{ end }}<|im_start|>assistant
"""SYSTEM
SYSTEM yönergesi, uygulanabilirse şablonda kullanılacak sistem mesajını belirtir.
SYSTEM """<sistem mesajı>"""ADAPTER
ADAPTER yönergesi, temel modele uygulanması gereken ince ayarlanmış bir LoRA adaptörünü belirtir. Adaptörün değeri, mutlak bir yol veya Modelfile'a göreceli bir yol olmalıdır. Temel model, bir FROM yönergesi ile belirtilmelidir. Temel model, adaptörün ayarlandığı temel model ile aynı değilse davranış düzensiz olur.
Safetensor adaptör
ADAPTER <safetensor adaptör yolu>Şu anda desteklenen Safetensor adaptörleri:
- Llama (Llama 2, Llama 3 ve Llama 3.1 dahil)
- Mistral (Mistral 1, Mistral 2 ve Mixtral dahil)
- Gemma (Gemma 1 ve Gemma 2 dahil)
GGUF adaptör
ADAPTER ./ollama-lora.ggufLİSANS
LICENSE yönergesi, bu Modelfile ile kullanılan modelin paylaşıldığı veya dağıtıldığı yasal lisansı belirtmenizi sağlar.
LICENSE """
<lisans metni>
"""MESSAGE
MESSAGE yönergesi, modelin yanıt verirken kullanması için bir mesaj geçmişi belirtmenizi sağlar. Modeli benzer şekilde cevaplamaya yönlendirecek bir konuşma oluşturmak için MESSAGE komutunu birden fazla kez kullanın.
MESSAGE <rol> <mesaj>Geçerli roller
| Rol | Açıklama |
|---|---|
| system | Model için SYSTEM mesajını sağlamanın alternatif yoludur. |
| user | Kullanıcının sorabileceği örnek bir mesaj. |
| assistant | Modelin nasıl yanıt vermesi gerektiğine dair örnek bir mesaj. |
Örnek konuşma
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 yönergesi, modelin gerektirdiği minimum Ollama sürümünü belirtmenizi sağlar.
REQUIRES <sürüm>Sürüm, geçerli bir Ollama sürümü olmalıdır (ör. 0.14.0).
Notlar
Modelfilebüyük/küçük harfe duyarlı değildir. Örneklerde, argümanlardan ayırt etmeyi kolaylaştırmak için yönergeler büyük harfle kullanılmıştır.- Yönergeler herhangi bir sırada olabilir. Örneklerde, kolay okunabilirliği sağlamak için
FROMyönergesi ilk sırada yer alır.