Ollama Custom Import Model
краткое содержание
В этом разделе вы узнаете, как использовать Modelfile для настройки импортированных моделей.
- Импорт из GGUF
- Импорт из Pytorch или Safetensors
- Импортировано непосредственно из модели
- Пользовательская подсказка
I. Импорт из GGUF
GGUF (GPT-Generated Unified Format) - это формат файлов для сохранения тонко настроенных языковых моделей. Этот формат разработан для того, чтобы помочь пользователям легко обмениваться моделями и импортировать их между различными платформами и средами. Он поддерживает несколько форматов квантования, что позволяет эффективно уменьшить размер файлов моделей.
Его предшественником был GGML (GPT-Generated Model Language), тензорная библиотека, разработанная специально для машинного обучения, имеющая однофайловый формат и удобная для работы на различных архитектурах CPU и GPU, но впоследствии столкнувшаяся с проблемами из-за недостаточной гибкости в разработке, совместимости и сложности в обслуживании.
Оллама Импорт моделей из файлов GGUF поддерживается следующими шагами:
- загрузка
.gguf
газеты
Ссылка для скачивания: https://huggingface.co/RichardErkhov/Qwen_-_Qwen2-0.5B-gguf/resolve/main/Qwen2-0.5B.Q3_K_M.gguf?download=true
Для демонстрационных целей мы выбрали модель Qwen2-0.5B. Скачайте ее и скопируйте в корневой каталог первой части. Вы можете ориентироваться на следующую структуру каталогов:
├── 1.从gguf直接导入/
│ ├── main.ipynb
│ ├── Modelfile
│ └── Qwen-0.5B.Q3_K_M.gguf
├── 2.safetensors导入/
│ ├── llama-3-8b-bnb-4bit/
│ ├── main.ipynb
│ ├── Modelfile
├── 3.模型直接导入/
│ ├── llama.cpp/
│ ├── Qwen-0.5b/
│ ├── main.ipynb
│ ├── Modelfile
│ └── Qwen_instruct_0.5b.gguf
└── 4.自定义Prompt实践/
├── main.ipynb
└── Modelfile
Наконечник
Код главы 3 и сопутствующая документация находятся в блокноте. Если вы не уверены, где установлены файлы модели, вы можете обратиться к ноутбук/C3
- Создайте новый файл Modelfile
FROM ./Qwen2-0.5B.Q3_K_M.gguf
- Создание моделей в Ollama
Примечание
Всегда выполняйте следующие команды терминала из каталога, в котором находится файл Modelfile!
ollama create mymodel -f Modelfile
- Запуск модели в терминале (проверено, что она не запускается в ноутбуке, лучше запустить ее в терминале)
ollama run mymodel

II. Импорт из Pytorch или Safetensors
Safetensors - это формат файлов для хранения весов моделей глубокого обучения, который призван решить вопросы безопасности, эффективности и простоты использования. Эта часть функциональности все еще разрабатывается участниками сообщества, и в настоящее время ресурсы документации ограничены.
Если импортируемая модель представляет собой одну из следующих архитектур, ее можно импортировать в Ollama напрямую через Modelfile. Конечно, вы также можете преобразовать файл safetensors в файл gguf и затем обработать его, процесс преобразования можно найти в части III.
Более подробную информацию о сейфетензорах и GGUF можно получить по этой ссылке https://www.linkedin.com/pulse/llama-3-safetensors-vs-gguf-talles-carvalho-jjcqf.
- LlamaForCausalLM
- MistralForCausalLM
- GemmaForCausalLM
Поскольку этот раздел все еще оптимизируется сообществом, приведенный здесь пример кода и процесса приведен только для справки и не гарантирует успешной работы. Пожалуйста, обратитесь к официальной документации для получения подробной информации.
- Скачать модель llama-3
!pip install huggingface_hub
# 下载模型
from huggingface_hub import snapshot_download
model_id = "unsloth/llama-3-8b-bnb-4bit"
snapshot_download(
repo_id=model_id,
local_dir="llama-3-8b-bnb-4bit",
local_dir_use_symlinks=False,
revision="main",
# 怎么获取<YOUR_ACCESS_TOKEN>,请参照部分3
use_auth_token="<YOUR_ACCESS_TOKEN>")
- Создайте в корневом каталоге файл Modelfile со следующим содержимым:
FROM ./llama-3-8b-bnb-4bit
- Создание моделей в Ollama
ollama create mymodel2 -f Modelfile
- операционная модель
ollama run mymodel2
III. Прямой импорт из моделей
Обычно мы сталкиваемся с большим количеством файлов моделей в HuggingFace, к счастью, hf предоставляет очень удобный API для загрузки и обработки этих моделей, как и выше прямая загрузка ограничена сетевым окружением, скорость очень медленная, этот небольшой раздел мы будем использовать скрипт и hf для завершения.
llama.cpp GGUF - это проект с открытым исходным кодом, который предоставляет функции CLI и сервера.
Для архитектур, которые не могут быть напрямую преобразованы Ollama, мы можем использовать llama.cpp для их квантования и преобразования в формат GGUF, а затем импортировать их первым способом. Весь наш процесс преобразования разделен на следующие шаги:
- Загрузите модель с сайта huggingface;
- Используйте llama.cpp для выполнения преобразования;
- Используйте llama.cpp для количественной оценки модели;
- Запустите и загрузите модель.
3.1 Загрузка модели из HuggingFace
[](https://github.com/datawhalechina/handy-ollama/blob/main/docs/C3/1.%20%E8%87%AA%E5%AE%9A%E4%B9%89%E5%AF%BC%E5%85%A5%E6%A8%A1%E5%9E%8B.md#31-%E4%BB%8E-huggingface-%E4%B8%8B%E8%BD%BD-model)Наиболее интуитивно понятный способ загрузки - через git-клон или ссылку, но поскольку llm считает каждую часть по гигабайтам, избегая OOM Error(Out of memory)
Мы можем написать простой download.py на языке Python.
Сначала нужно зайти на сайт hf, чтобы получить персональные данные пользователя ACCESS_TOKEN
чтобы открыть страницу личных настроек huggingface.



На данный момент у нас есть ACCESS_TOKEN
Далее мы используем huggingface_hub
(используется в форме номинального выражения) snapshot_download
Чтобы загрузить модель, мы выбрали здесь или Qwen-0.5b.
!pip install huggingface_hub
from huggingface_hub import snapshot_download
model_id = "Qwen/Qwen1.5-0.5B" # hugginFace's model name
snapshot_download(
repo_id=model_id,
local_dir="Qwen-0.5b",
local_dir_use_symlinks=False,
revision="main",
use_auth_token="<YOUR_ACCESS_TOKEN>")
Мы переходим в третью часть каталога для выполнения, загрузка может занять много времени, наберитесь терпения.
3.2 Преобразование с помощью llama.cpp
llama.cpp был разработан главным автором GGML на основе самой ранней версии llama на c/c++ с целью рассуждения о различных LLM с помощью CPU, и теперь поддерживает большинство основных моделей, даже мультимодальные модели, благодаря постоянным усилиям сообщества.
Сначала мы клонируем библиотеку llama.cpp локально, в ту же директорию, что и загруженная модель:
git clone https://github.com/ggerganov/llama.cpp.git
Поскольку процесс преобразования моделей с помощью llama.cpp основан на разработке на python, вам необходимо установить соответствующие библиотеки, а для создания нового окружения рекомендуется использовать conda или venv.
cd llama.cpp
pip install -r requirements.txt
python convert_hf_to_gguf.py -h
Если на экране появится следующее сообщение, программа преобразования готова.

Далее мы конвертируем модель, которую только что загрузили из HuggingFace, в формат GGUF с помощью следующего скрипта:
python convert_hf_to_gguf.py ../Qwen-0.5b --outfile Qwen_instruct_0.5b.gguf --outtype f16

Вы можете увидеть дополнительный файл Qwen_instruct_0.5b.gguf в каталоге llama.cpp, и этот процесс занимает всего несколько секунд.
Чтобы сэкономить накладные расходы при рассуждениях, мы квантуем модель, а затем приступаем к квантованию практических упражнений.
3.3 Количественная оценка модели с помощью llama.cpp
Квантование модели - это метод преобразования высокоточной модели с плавающей запятой в низкоточную модель. Основная цель квантования модели - уменьшить размер и вычислительные затраты модели и сохранить ее как можно более точной, с тем чтобы модель могла работать на устройствах с ограниченными ресурсами, таких как центральные процессоры или мобильные устройства.
Аналогично, сначала мы создаем файл Modelfile, а затем используем ollama create
для создания нашей модели из gguf-файла, но немного иначе, чем в первом шаге, мы добавили логику квантования, просто выполнив команду ollama create
это просто добавить параметр.
Сначала переместите файл Qwen_instruct_0.5b.gguf, который вы получили в предыдущем шаге, в корневой каталог третьей части, а затем создайте файл Modelfile со следующим содержимым.
FROM ./Qwen_instruct_0.5b.gguf
Терминал запускает скрипты создания и квантования.
# 第三部分根目录下
ollama create -q Q4_K_M mymodel3 -f ./Modelfile

На этом этапе наша модель квантифицирована и создана, и теперь мы можем запустить ее.
3.4 Запуск и загрузка модели
Шаги по запуску модели с помощью gguf подробно описаны в первой части и не будут повторяться здесь.
Если сохраненный локально файл модели занимает слишком много места, мы можем загрузить gguf-модель в наше собственное репо в huggingface, та же идея, что и в шаге 1, мы можем написать логику загрузки.
Наконечник
Для завершения загрузки необходимо записать разрешение HF_ACCESS_TOKEN и изменить model_id. Your_hf_name означает имя вашей учетной записи huggingface.
from huggingface_hub import HfApi
import os
api = HfApi()
HF_ACCESS_TOKEN = "<YOUR_HF_WRITE_ACCESS_TOKEN>"
#TODO 这里需要设置你的model_id
#例如 model_id = "little1d/QWEN-0.5b"
model_id = "your_hf_name/QWEN-0.5b"
api.create_repo(
model_id,
exist_ok=True,
repo_type="model", # 上傳格式為模型
use_auth_token=HF_ACCESS_TOKEN,
)
# upload the model to the hub
# upload model name includes the Bailong-instruct-7B in same folder
for file in os.listdir():
if file.endswith(".gguf"):
model_name = file.lower()
api.upload_file(
repo_id=model_id,
path_in_repo=model_name,
path_or_fileobj=f"{os.getcwd()}/{file}",
repo_type="model", # 上傳格式為模型
use_auth_token=HF_ACCESS_TOKE)

После загрузки вы сможете увидеть его в своем хранилище hf!
Пользовательская подсказка
Ollama поддерживает настраиваемые подсказки, которые позволяют модели генерировать текст, лучше отвечающий потребностям пользователя.
Настройка подсказки выполняется следующим образом:
- Создайте файл Modelfile в корневом каталоге
FROM llama3.1
# sets the temperature to 1 [higher is more creative, lower is more coherent]
PARAMETER temperature 1
# sets the context window size to 4096, this controls how many tokens the LLM can use as context to generate the next token
PARAMETER num_ctx 4096
# sets a custom system message to specify the behavior of the chat assistant
SYSTEM You are Mario from super mario bros, acting as an assistant.
- Создание моделей
ollama create mymodel -f ./Modelfile

Создание модели может занять немного больше времени, чем ее извлечение, поэтому наберитесь терпения.

Запустите его снова. ollama list
Взглянув на существующую модель, вы увидите, что mymodel была создана правильно.

- операционная модель
ollama run mymodel

Как видите, наша маленькая альпака 🦙 превратилась в Марио! Настройка Prompt прошла успешно! 😘😘😘😘😘😘
ссылка
- https://www.linkedin.com/pulse/llama-3-safetensors-vs-gguf-talles-carvalho-jjcqf
- https://www.sysgeek.cn/ollama-on-windows
- https://ollama.com/blog/openai-compatibility
© заявление об авторских правах
Авторское право на статью Круг обмена ИИ Пожалуйста, не воспроизводите без разрешения.
Похожие статьи
Нет комментариев...