TL;DR: начнём с рабочего мини-стека, проговорим риски и ограничения, соберём первый прототип на локальной машине и научимся его измерять.

Почему сейчас и зачем это вам

AI стал инструментом общего назначения. Он не заменяет мышление — он ускоряет рутинные части. Главные навыки сегодня: формулировать задачу, отбирать данные, строить измеримый процесс и знать пределы моделей.

Базовые понятия — кратко и без мифов

  • Модель — функция с миллионами/миллиардами параметров.
  • Обучение — подбор параметров, минимизирующих функцию потерь на данных.
  • Инференс — применение обученной модели на новых данных.
  • LLM — языковая модель, предсказывающая следующий токен. Она не «знает» фактов — она аппроксимирует вероятностное распределение над текстом.
  • RAG — retrieve-augment-generate: подмешиваем факты из своей БД к контексту запроса, чтобы ответы опирались на ваши данные.
  • Качество — это метрики, а не чувство. Для генерации автоматические метрики ограничены; нужны и человек, и задача-специфичные проверки.

Минимальный стек для первых экспериментов

  • Язык: Python 3.11.
  • Библиотеки: PyTorch, transformers, datasets, accelerate, onnxruntime.
  • Инструменты: Jupyter/VS Code, Docker (по мере необходимости), git.
  • Аппаратно: обычный ноутбук/ПК; GPU ускоряет, но не обязателен для старта.

Пробный прогон (локально)

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

python -m venv .venv
# Windows: .venv\Scripts\activate
# Linux/macOS:
source .venv/bin/activate
pip install --upgrade pip
pip install torch transformers onnxruntime accelerate

Мини-скрипт инференса:

# demo.py — минимальный оффлайн-инференс
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch

model_id = "TinyLlama/TinyLlama-1.1B-Chat-v1.0"
tok = AutoTokenizer.from_pretrained(model_id)
m = AutoModelForCausalLM.from_pretrained(
    model_id,
    torch_dtype=torch.float16 if torch.cuda.is_available() else torch.float32
)

prompt = "Объясни разницу между дообучением (fine-tuning) и RAG кратко:"
x = tok(prompt, return_tensors="pt")
y = m.generate(**x, max_new_tokens=120)
print(tok.decode(y[0], skip_special_tokens=True))

Запустите:

python demo.py

Да, модель маленькая, но этого достаточно, чтобы проверить пайплайн.

Как будем оценивать модели

  • Точность ≠ полезность. Для генерации важны контекст, инструкции, подстановка фактов и post-processing.
  • Базовые проверки:
    • toxicity/PII leakage — не допускаем утечки персональных данных;
    • factuality — на вопросах с эталонами;
    • task-specific — тест-кейсы, приближённые к реальным запросам.
  • Мини-чек-лист к каждому прототипу: воспроизводимость (seed/версии), скорость (tokens/s), стоимость (время/ресурсы), стабильность (ошибки/краши).

Roadmap на ближайшие недели

  1. RAG без боли. От запроса к ответу: чанкование, эмбеддинги, векторное хранилище, переформулировка запроса, цитаты.
  2. LoRA-тонкая настройка. На своём датасете, с контролем качества и оверфита.
  3. Оптимизация инференса. Квантизация до INT8/4, компиляция графа, сравнение производительности.
  4. On-device. Малые модели на CPU/NPU ноутбука и на одноплатниках.
  5. Безопасность. Prompt-injection, jailbreak-защита, фильтры, логи и алерты.
  6. MLOps-минимум. Версионирование датасетов/экспериментов, упаковка, деплой, мониторинг дрейфа.

Типичные заблуждения и как с ними быть

  • «Модели знают правду». Нет. Они генерируют правдоподобный текст. За фактчек отвечает ваш пайплайн (RAG/верификация).
  • «Больше параметров — лучше». Иногда да, но часто лучше данные и инженерия.
  • «Один промт на все случаи». В реальности — набор промтов/шаблонов на разные подзадачи, плюс программная оркестрация.

Ошибки, которые мы будем избегать

  • Смешение обучающих и тестовых данных.
  • Неопределённые метрики («кажется, стало лучше»).
  • Отсутствие базовой телеметрии в прототипах (время/память/ошибки).
  • Игнорирование лицензий датасетов и моделей.

Как участвовать

Присылайте PR/Issues с улучшениями, идеями задач, ссылками на датасеты и открытые репозитории. Практика и критика приветствуются.

Поехали. Следующий пост — RAG-скелет на минимальном стеке и проверка его качества.