Дообучение модели ollama deepseek-r1:8b в определённой области знаний по своим примерам

Гобелен - кликните для возврата на главную

Не прошло и месяца а Фурмановская ЦРБ в очередной раз попала в историю. На этот раз сотрудница клеветала на пациентов, а именно огласку получил случай когда сотрудница назвала пациента алкашём.

Так почему бы не начать использовать обход блокировки YouTube при том что техническая возможность используя расширение nikolaevevge для браузера Mozilla Firefox уже появилась, а объем полезной(и не очень) информации на видеохостинге YouTube, по мнению некоторых диванных экспертов, меньше не стал.

Ровно 3 года назад произошло событие, которое подарило жителям планеты Змеля новый чистый праздник 6 апреля - в этот замечательный день земля забрала гнить негодяя и СПАМера Владимира Вольфовича Жириновского.

Летний сад Фурманов

Как бы не обстояли дела в области культуры и IT-технологий, Самосвал писал статьи на связанные темы и планирует ещё написать.

На очередном конкурсе танцев, школьница отлично выступила.

Что использовать вместо Юбуст

Вот та самая информация: программа для продвижения канала YouTube, эта информация выложена уже несколько лет, при этом просмотров не много, а метод который описан в данном видео действительно помогает продвигать видео в YouTube.

Начал разбираться с информацией которая находится в HTTPS клиентском запросе рукопожатия.

Обратите внимание! Объект изображённый на гобилене может отличаться от общепринятого вида описанного объекта. Тут дело в том что художник видит именно так!

104 549 руб.

Описание товара

Устанвил вот такую модель: ollama run deepseek-r1:8b предложил ей задачку по программированию. Вижу что она уже достаточно долго пробует проанализировать область. Могу ли я как то дать этой модели задачу, чтобы она анализирована определённую область в программировании, а затем обучилась бы на своих выводах и быстрее бы смогла решать задачи из этой области?

Да, вы можете настроить модель deepseek-r1:8b для более эффективного анализа определённой области в программировании, но важно понимать её ограничения.

1. Fine-tuning (Дообучение)

Если модель поддерживает дообучение (fine-tuning), вы можете:

Собрать датасет из задач и решений по нужной области (например, алгоритмы, веб-разработка, машинное обучение).

Дообучить модель на этих данных, чтобы она лучше справлялась с конкретными задачами.

Пример команды для Ollama (если поддерживается):

bash
    
ollama fine-tune deepseek-r1:8b --dataset your_dataset.jsonl

  

(Но пока Ollama не поддерживает fine-tuning напрямую — это может потребовать самостоятельного обучения модели и создания нового адаптера.)

2. Использование RAG (Retrieval-Augmented Generation)

Если дообучение недоступно, можно использовать RAG — метод, при котором модель получает доступ к релевантной информации перед ответом.

Соберите базу знаний (документация, примеры кода, статьи).

Настройте систему, которая будет подгружать нужные данные в контекст модели перед генерацией ответа.

Python
    
# Псевдокод для RAG с Ollama
from vector_db import VectorDatabase  
      
db = VectorDatabase.load("programming_rag_db")  
      
def ask_model(question, domain):  
    relevant_info = db.search(question, domain)  
    prompt = f"""Ты эксперт в {domain}. Вот справочная информация:  
    {relevant_info}  
    Ответь на вопрос: {question}  
    """  
    return ollama.generate(prompt)  
      
answer = ask_model("Как оптимизировать SQL-запрос?", "Базы данных")

  

3. Кэширование ответов

Если модель часто решает однотипные задачи, можно кэшировать её ответы и использовать их для ускорения.

4. Улучшение промптов

Иногда достаточно просто правильно формулировать запросы:

Плохо: "Напиши код для сортировки"

Лучше: "Напиши эффективную реализацию быстрой сортировки на Python с объяснением шагов"

5. Альтернативные варианты

Если deepseek-r1:8b долго анализирует, попробуйте:

Более специализированные модели (например, deepseek-coder для программирования).

Уменьшение контекста (слишком длинные промпты замедляют работу).

Вывод

Прямое "обучение на своих выводах" в реальном времени недоступно, но можно:

  • дообучить модель (если поддерживается);
  • использовать RAG для подсказок;
  • оптимизировать промпты и кэшировать ответы.

Если вам нужен более специализированный помощник по коду, попробуйте deepseek-coder или codellama. Мне нужно больше информации именно по варианту дообучения модели. Другие предложенные варианты не рассматрвиаются. Если требуется доустановить какой либо софт, то какой именно.

Если ваша цель — дообучить (fine-tune) модель deepseek-r1:8b под конкретную область программирования, вот детальное руководство по инструментам и шагам.

1. Подготовка к дообучению

Требуемый софт

Для fine-tuning LLM (особенно 8B параметров) вам понадобится:

GPU (минимум 24 ГБ VRAM, например, NVIDIA A10G, RTX 3090/4090, A100).

ПО для дообучения:

PyTorch + Transformers (Hugging Face) — основной фреймворк.

Unsloth (опционально) — ускоряет fine-tuning в 2–5 раз.

PEFT (LoRA, QLoRA) — для эффективного дообучения с малыми вычислительными затратами.

Ollama (если нужно переконвертировать модель после обучения).

Установка:

bash
    
# Базовые зависимости
pip install torch transformers datasets accelerate peft bitsandbytes
      
# Для Unsloth (ускорение)
pip install "unsloth[colab-new] @ git+https://github.com/unslothai/unsloth.git"

  

2. Подготовка датасета

Формат данных:

JSONL (каждая строка — пример в формате {"input": "...", "output": "..."}).

Тематическая выборка (например, задачи по Python, SQL, алгоритмам).

Пример датасета (programming_finetune.jsonl):

JSON
    
{"input": "Напиши функцию быстрой сортировки на Python.", "output": "def quicksort(arr):\n    if len(arr) <= 1:\n        return arr\n    pivot = arr[len(arr)//2]\n    left = [x for x in arr if x < pivot]\n    middle = [x for x in arr if x == pivot]\n    right = [x for x in arr if x > pivot]\n    return quicksort(left) + middle + quicksort(right)"}
{"input": "Как оптимизировать SQL-запрос с JOIN?", "output": "Оптимизация SQL-запроса с JOIN:\n1. Используй индексы для полей JOIN.\n2. Замени SELECT * на конкретные поля.\n3. Проверь порядок таблиц в JOIN (меньшие таблицы сначала)."}

  

3. Fine-tuning с LoRA/QLoRA

Код для дообучения

Используем PEFT (LoRA) для эффективного обучения:

python
    
from transformers import AutoModelForCausalLM, AutoTokenizer, TrainingArguments
from peft import LoraConfig, prepare_model_for_kbit_training
from trl import SFTTrainer
import torch
      
# Загрузка модели и токенизатора
model_id = "deepseek-ai/deepseek-r1-8b"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id, load_in_4bit=True)
      
# Настройка LoRA
peft_config = LoraConfig(
    r=16,
    lora_alpha=32,
    target_modules=["q_proj", "k_proj", "v_proj"],
    lora_dropout=0.05,
    bias="none",
    task_type="CAUSAL_LM",
)
      
# Подготовка модели
model = prepare_model_for_kbit_training(model)
      
# Параметры обучения
training_args = TrainingArguments(
    output_dir="./deepseek-r1-finetuned",
    per_device_train_batch_size=4,
    gradient_accumulation_steps=4,
    learning_rate=2e-5,
    num_train_epochs=3,
    fp16=True,
    logging_steps=10,
    optim="paged_adamw_8bit",
    save_strategy="epoch",
)
      
# Тренер
trainer = SFTTrainer(
    model=model,
    train_dataset=dataset,  # Ваш датасет в формате Dataset.from_json()
    peft_config=peft_config,
    args=training_args,
    tokenizer=tokenizer,
    formatting_func=lambda x: f"Input: {x['input']}\nOutput: {x['output']}",
)
      
# Запуск обучения
trainer.train()

  

4. Конвертация в Ollama (если нужно)

После обучения сохраните модель и переконвертируйте в формат GGUF для Ollama:

bash
    
# Конвертация в GGUF (используем llama.cpp)
python -m transformers.models.llama.convert_llama_weights_to_gguf --input_dir ./deepseek-r1-finetuned --model_size 8B --output_dir ./gguf-model
      
# Создание мода для Ollama
ollama create my-finetuned-model -f ./gguf-model/model.gguf

  

5. Проверка модели

python
    
from transformers import pipeline
      
pipe = pipeline("text-generation", model="./deepseek-r1-finetuned")
response = pipe("Напиши код бинарного поиска на Python:")
print(response[0]["generated_text"])

  

Ограничения

Аппаратные требования: Для 8B-модели нужен мощный GPU.

Качество датасета: Чем точнее примеры — тем лучше результат.

Поддержка Ollama: Прямой fine-tuning в Ollama пока недоступен, требуется самостоятельное обучение через Hugging Face.

Если нет GPU, можно использовать Google Colab Pro (A100) или облачные сервисы (Lambda Labs, RunPod).

Для более лёгкого варианта попробуйте дообучить меньшую модель (например, deepseek-coder-1.3b).

Другие товары

Вы так же можете прочитать следующие статьи: