Дообучил нейросеть OpenChat на своем наборе данных. Перед конвертацией модель прекрасно отвечала на вопросы так, как я обучил ее. После того, как я сконвертировал её в .gguf файл, она забыла эти данные и начала отвечать так, как отвечала до обучения.
В качестве примера я взял вопрос "Кто такой PyWebSol?".
Ответ до конвертации:
PyWebSol - это программист, который создал такие проекты, как:
1) PyWeb-RuGPT: ...
2) ...
Ответ после конвертации в gguf формат:
PyWebSol - это компания, специализирующаяся на разработке веб-приложений и предоставлении услуг по созданию интернет-магазинов, сайтов для недвижимости и других проектов. Они используют Python и Django в качестве основных технологий для разработки веб-приложений.
Ответ неверный.
Скрипт, который я использовал для конвертации:
import os
from peft import AutoPeftModelForCausalLM
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
input_file = input("Введите путь к папке с adapter моделью: ") # /mnt/aiSSD/openchat/0.1
out_file = input("Введите путь к файлу новой модели: ") # /mnt/aiSSD/openchat/openchat-01.gguf
temp_dir = "temp"
model = AutoPeftModelForCausalLM.from_pretrained(
input_file,
torch_dtype=torch.bfloat16,
)
tokenizer = AutoTokenizer.from_pretrained(input_file)
model.base_model.save_pretrained(temp_dir)
tokenizer.save_pretrained(temp_dir)
del model
del tokenizer
os.system(f"python3 llama.cpp/convert.py {temp_dir} --outfile {out_file} --ctx 4096")
os.system(f"rm -rf {temp_dir}")
Он использует llama.cpp, peft и transformers.