Пропускане към основното съдържание

Финна настройка на модела Google's Gemma-3-4B-IT с MLX_LM и подготовката му за Ollama

Финното настройване на големи езикови модели (LLMs) става все по-достъпно благодарение на инструменти като MLX-LM, който е оптимизиран за Apple Silicon. В тази статия ще направим финна настройка на базовия модел Google Gemma-3-4B-IT с помощта на персонализиран датасет, сливане на адаптерите и конвертиране на резултата във формат GGUF за използване с Ollama.


Ще разгледаме основните стъпки: изтегляне на базовия модел, финна настройка, сливане, работа с токенайзера, конвертиране към GGUF и конфигуриране на Modelfile за Ollama. Предварителните условия включват Mac от M-серията, инсталиран MLX_LM, регистрация в Hugging Face и Llama.cpp за етапа на конвертиране. Да започваме!


Стъпка 1: Изтегляне на базовия модел от Hugging Face


Преди да можете да настроите модела, трябва да изтеглите базовия Google Gemma-3-4B-IT модел от Hugging Face. Имайте предвид, че Gemma моделите са с ограничен достъп, което означава, че трябва да приемете лицензионните условия на страницата на модела (https://huggingface.co/google/gemma-3-4b-it) и да имате одобрен акаунт. След одобрение ще ви трябва Hugging Face access token за да можете да изтеглите модела.


Първо се уверете, че имате Homebrew, инсталиран на macOS (ако не — инсталирайте го от https://brew.sh/). След това инсталирайте Hugging Face CLI чрез Homebrew:


brew install huggingface-cli


За да получите вашият access token:

  1. Отидете на https://huggingface.co/ и се регистрирайте, ако нямате акаунт.
  2. Отидете в настройките на профила си чрез аватара горе вдясно.
  3. От менюто изберете „Access Tokens“.
  4. Натиснете „New token“, задайте име, изберете подходящите права (напр. „read“ за изтегляне), и копирайте токен-а. Ако искате и да качите вашият фино настроен модел по-късно, изберете „write“.


След това влезте чрез CLI:


huggingface-cli login


Поставете токен-а.

Сега изтеглете модела:


huggingface-cli download google/gemma-3-4b-it --local-dir gemma-3-4b-it


Това ще запази файловете в директория gemma-3-4b-it. Ако пропуснете тази стъпка, MLX_LM автоматично ще изтегли модела в кеша (~/.cache/huggingface/hub), когато стартирате командата за фина настройка. Но ръчното изтегляне ви дава възможност да проверите файловете предварително.


Стъпка 2: Подготовка на датасета


За да настроите модела, ви трябва датасет. Има три различни типа формати, които mlx поддържа, и след тестване на всички, открих, че най-добри резултати получавам с формата completion, например:


{"prompt": "What is the capital of France?", "completion": "Paris."}


За да получите смислени резултати, ще са ви нужни 50 или повече такива примери в train.jsonl. Важно е файлът да е във формат JSONL, а не JSON — всеки обект е на нов ред, без запетаи между тях. Нужен е и файл valid.jsonl със същите типове записи. Обикновено 80% от данните отиват в train.jsonl, а 20% — в valid.jsonl.


Стъпка 3: Фина настройка на модела


След като имате базовия модел, можете да го настроите по вашите данни. В примера използваме Google Gemma-3-4B-IT и датасет-а в папка ./data. MLX_LM използва LoRA (Low-Rank Adaptation), което прави процеса ефективен, без да се обучава целият модел.


Стартирайте със:


mlx_lm.lora --model google/gemma-3-4b-it --train --data ./data --batch-size 4 --iters 100


* --model: Моделът в Hugging Face или локален път.

* --train: Активира режим обучение.

* --data: Път до датасета.

* --batch-size 4: За контрол на паметта.

* --iters 100: Брой итерации — настройте според нуждите.


Ще бъдат генерирани адаптери в директория adapters. Следете метриките за загуба (loss).


Стъпка 4: Сливане на адаптерите с базовия модел


След обучението, слейте адаптерите с базовия модел, за да получите единен, настроен модел:


mlx_lm.fuse --model google/gemma-3-4b-it --save-path gemma-3-4b-it-ft --adapter-path adapters --de-quantize


* --save-path: Къде да се запази крайният модел.

* --adapter-path: Път към адаптерите.

* --de-quantize: Осигурява пълна прецизност — полезно за конвертиране.


Стъпка 5: Копиране на токенайзера


Тази стъпка не беше необходима за настройка на Оllama модели като  Llama-3.2-3B-Instruct.


MLX_LM не включва автоматично токенайзера в крайния модел. Трябва да го копирате ръчно от кеша.

Намерете токенайзера (заменете <commit hash>):


cp ~/.cache/huggingface/hub/models--google--gemma-3-4b-it/snapshots/<commit hash>/tokenizer.model gemma-3-4b-it-ft


Това гарантира коректна обработка.


Стъпка 6: Конвертиране към GGUF


За работа с Ollama трябва да конвертирате модела във формат GGUF (поддържан от Llama.cpp и Ollama).

В директорията на Llama.cpp изпълнете:


python convert_hf_to_gguf.py path-to-your-project/gemma-3-4b-it-ft --outfile path-to-your-project/gguf/<name your model>.gguf --outtype f16


* Пътят към крайния модел.

* --outfile: Място за GGUF файла.

* --outtype f16: Баланс между размер и производителност.


Стъпка 7: Създаване на Modelfile и стартиране в Ollama


Създайте файл Modelfile със съдържание:


FROM ./gguf/<name of you model>.gguf


TEMPLATE """{{ .System }}

{{ .Prompt }}

{{ .Response }}"""


PARAMETER num_ctx 2048

PARAMETER temperature 0.7


За създаване и стартиране:


ollama create my-fine-tuned-gemma -f Modelfile

ollama run my-fine-tuned-gemma


Вече можете да взаимодействате с вашия фино настроен модел чрез UI, CLI или API на Ollama!


Заключение


Фината настройка с MLX_LM е мощен начин да адаптирате модели като Gemma-3-4B-IT към вашите данни, а интеграцията с Ollama улеснява внедряването. Процесът ми отне само няколко часа на Mac M3, но резултатите зависят от хардуера и датасета. Експериментирайте с хиперпараметрите и задължително проверявайте за пристрастия или халюцинации след настройката.


Ако срещнете проблеми, прегледайте документацията на MLX_LM или GitHub репото на Llama.cpp. Успех! 🚀


Ресурси


Llama.cpp

MLX-LM

HuggingFace

JSONL

Коментари

Популярни публикации от този блог

Родопски диалектни думи

--> Първата седмица на месец май изкарахме почивайки в село Давидково. Малко китно селце в Родопите (любимите ми планини). От доста време обикалям по тези места, но досега не бях чувал родопския диалект. Този път ми се отдаде тази възможност. Оказа се, че човек трябва да се позапознае за доста от думите, за да разбере смисъла на това което му говорят, а и за да се избегнат недоразумения. Например думата "копеле" няма негативен смисъл ами означава момче или пък "опишкал съм се", което ще рече убол съм се, а не напикал съм се. Впечатление ми направи и факта, че има много разновидности за думата "много", ето ги и тях поне тези които знам: еце, букадър, шукадър, дерин. Ето и още един израз за района: "Ищеш ли кукуди в гюся", което ще рече Искаш ли юмруци в гърдите, местна заплаха за саморазправа;) По-надолу ще направя един кратък речник на думите които чух там. Сигурно това няма да е пълния списък, но смятам и занапред да записвам каквото чуя...

Поддръжка и настройка на хидрофор

Целта на поста е да обясни с прости думи и визуализации как да установите дали хидрофора ви е настроен правилно и да ви даде насоки как да го настройте ако не е. Също така ще опиша чести повреди, както и съвет как да ги поправите. Хидрофора е изключително проста система. От едната страна идва приток на вода от другата страна излиза под по-голямо налягане, точно като водна помпа ако пренебрегнем налягането. Като добавим към водната помпа разширителен съд (не съм сигурен дали това е точният термин) и пресостат и имаме завършен хидрофор. Във вътрешността на разширителният съд има мембрана. Може да си я представите като гумена топка, с автомобилен фитил който се показва извън разширителното тяло и служи за премерване на налягането в мембраната. Хидрофора работи като мембраната е надута до определено налягане, а водната помпа нагнетява вода в останалото пространство в разширителният съд до зададеното максимум налягане в работният диапазон, след което спира работа. Това е принципа на работа ...

Памук заседнал в ухото

Какво да направите ако чистейки ушите си памука заседне в ухото ви? Ако има лекар наблизо или спешен център е препоръчително да отидете и памука да бъде отстранен от доктор. На пръв поглед изглежда дребно и незначително събитие, но последствията могат да бъдат доста сериозни. В случай, че не почистите ушния канал напълно, инфекция е напълно възможна, а в най-лошия случай и загуба на слух. Ако няма лекар наблизо и трябва да се оправяте сами, както ми се случи на мен, ето какво може да направите: Намерете някаква клечка било то кибритена или за зъби. Счупете края и я сдъвчете хубаво докато не стане като метличка. След това внимателно я вкарайте в ушния си канал като я въртите през това време. Сдъвкания край с твърдите си влакна ще закачи влакната на памука, като по този начин памука ще се навие около клечката. Когато усетите, че памука се е закрепил за клечката издърпайте. Бъдете много внимателни когато вкарвате клечката в ухото си да не упражните голям натиск върху тъпанчето. Ако по н...