Ana içeriğe geç
Sürüm: 2.0.0

llama.cpp ile açık kaynaklı bir LLM'ye ince ayar yapın

LLM'lere ince ayar yapın

Açık kaynaklı bir LLM'yi şu şekilde ayarlayabilirsiniz

  • Konuşmaları takip etmeyi öğretin.
  • Talimatlara uymayı ve saygı göstermeyi öğretin.
  • Belirli sorulara cevap vermeyi reddetmesini sağlayın.
  • Ona belirli bir "konuşma" tarzı verin.
  • Belirli formatlarda (örn. JSON) yanıt vermesini sağlayın.
  • Belirli bir etki alanına odaklanmasını sağlayın.
  • Ona kesin bilgiyi öğretin.

Bunu yapmak için, modele soruyu ve beklenen yanıtı göstermek üzere bir dizi soru ve yanıt çifti oluşturmanız gerekir. Ardından, eğitimi gerçekleştirmek ve modelin her soru için beklenen yanıtı vermesini sağlamak için bir ince ayar aracı kullanabilirsiniz.

llama.cpp ile açık kaynaklı bir LLM'ye nasıl ince ayar yapılır

Popüler llama.cpp aracı bir finetune yardımcı program. CPU'larda iyi çalışıyor! Bu ince ayar kılavuzu Tony Yuan'ın izniyle yeniden üretilmiştir. Kimya konusu için açık kaynaklı bir LLM'yi tamamlayın proje.

İnce ayar yardımcı programını llama.cpp'den oluşturun

Bu finetune llama.cpp'deki yardımcı program, CPU'larda nicelenmiş GGUF dosyalarıyla çalışabilir ve böylece LLM'lerin ince ayarlanması için donanım gereksinimlerini ve masraflarını önemli ölçüde azaltır.

llama.cpp kaynak koduna göz atın ve indirin.

git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp

llama.cpp ikili dosyasını oluşturun.

mkdir yapı
cd yapı
cmake ..
cmake --build . --config Release

NVIDIA GPU ve CUDA araç seti yüklüyse, llama.cpp dosyasını CUDA desteğiyle oluşturmalısınız.

mkdir yapı
cd yapı
cmake .. -DLLAMA_CUBLAS=ON -DCMAKE_CUDA_COMPILER=/usr/local/cuda/bin/nvcc
cmake --build . --config Release

Temel modeli alın

Temel model olarak Meta'nın Llama2 chat 13B modelini kullanacağız. Bilgi işlem kaynaklarından tasarruf etmek için doğrudan Q5 nicelleştirilmiş GGUF model dosyasını kullandığımızı unutmayın. Hugging Face'teki Llama2 uyumlu GGUF modellerinden herhangi birini kullanabilirsiniz.

cd .. # llama.cpp dizinine geç
cd modelleri/
curl -LO https://huggingface.co/gaianet/Llama-2-13B-Chat-GGUF/resolve/main/llama-2-13b-chat.Q5_K_M.gguf

İnce ayar için bir soru ve cevap seti oluşturun

Daha sonra kimya konusu için 1700'den fazla Soru-Cevap çifti bulduk. Bir CSV dosyasında aşağıdaki gibidir.

SoruCevap
Hidrojeni benzersiz kılan nedir?Evrende en bol bulunan elementtir ve tüm maddenin %75'inden fazlasını oluşturur.
Jüpiter'in ana bileşeni nedir?Hidrojen, Jüpiter ve diğer gaz devi gezegenlerin ana bileşenidir.
Hidrojen yakıt olarak kullanılabilir mi?Evet, hidrojen roket yakıtı olarak kullanılır. Ayrıca elektrik üretmek için yakıt hücrelerine de güç sağlayabilir.
Cıvanın atom numarası nedir?Cıvanın atom numarası 80'dir
Merkür nedir?Cıva, oda sıcaklığında sıvı halde bulunan gümüş renkli bir metaldir. Periyodik tabloda atom numarası 80'dir. İnsanlar için zehirlidir.

Bu soruların çoğunu bulmama yardımcı olması için GPT-4'ü kullandık.

Daha sonra, bir Python betiği CSV dosyasındaki her satırı Llama2 sohbet şablonu biçiminde örnek bir QA'ya dönüştürmek için. Her QA çiftinin şu şekilde başladığına dikkat edin <SFT> ince ayar programının bir örnek başlatması için bir gösterge olarak. Sonuç train.txt dosyası artık ince ayarda kullanılabilir.

koy train.txt dosyasında llama.cpp/modeller dizinini GGUF temel modeliyle birlikte kullanın.

Finetune!

CPU'larınızda ince ayar işlemini başlatmak için aşağıdaki komutu kullanın. Şu anda sürekli çalışabilmesi için arka plana koyuyorum. Kaç CPU'ya sahip olduğunuza bağlı olarak birkaç gün hatta birkaç hafta sürebilir.

nohup ../build/bin/finetune --model-base llama-2-13b-chat.Q5_K_M.gguf --lora-out lora.bin --train-data train.txt --sample-start '<SFT>' --adam-iter 1024 &

İşlemi her birkaç saatte bir nohup.out dosya. Rapor edecek kayıp her yineleme için. İşlemi şu durumlarda durdurabilirsiniz kayıp sürekli olarak altında gider 0.1.

Not 1 Birden fazla CPU'nuz (veya CPU çekirdeğiniz) varsa, bir CPU çekirdeği ekleyerek ince ayar işlemini hızlandırabilirsiniz. -t parametresini yukarıdaki komuta ekleyerek daha fazla iş parçacığı kullanabilirsiniz. Örneğin, 60 CPU çekirdeğiniz varsa, şunları yapabilirsiniz -t 60 hepsini kullanmak için.

Not 2 İnce ayar işleminiz kesintiye uğrarsa, şu adresten yeniden başlatabilirsiniz kontrol noktası-250.gguf. Çıktı olarak verdiği bir sonraki dosya kontrol noktası-260.gguf.

nohup ../build/bin/finetune --model-base llama-2-13b-chat.Q5_K_M.gguf --checkpoint-in checkpoint-250.gguf --lora-out lora.bin --train-data train.txt --sample-start '<SFT>' --adam-iter 1024 &

Birleştirme

İnce ayar işlemi, LLM'nin sinir ağının birkaç katmanını günceller. Bu güncellenmiş katmanlar şu addaki bir dosyaya kaydedilir lora.bin ve şimdi yeni ince ayarlı LLM'yi oluşturmak için bunları temel LLM ile tekrar birleştirebilirsiniz.

../build/bin/export-lora --model-base llama-2-13b-chat.Q5_K_M.gguf --lora lora.bin --model-out chemistry-assistant-13b-q5_k_m.gguf

Sonuç bu dosyadır.

curl -LO https://huggingface.co/juntaoyuan/chemistry-assistant-13b/resolve/main/chemistry-assistant-13b-q5_k_m.gguf

Not 3 Bir kontrol noktası oluşturmak için bir kontrol noktası kullanmak istiyorsanız lora.bin dosyasında aşağıdaki komutu kullanın. Bu, dosyanın son haline inandığınızda gereklidir. lora.bin bir aşırı uyumdur.

../build/bin/finetune --model-base llama-2-13b-chat.Q5_K_M.gguf --checkpoint-in checkpoint-250.gguf --only-write-lora --lora-out lora.bin