Когда размер не имеет значения
ChatGPT знает все. Ну, почти все. Спроси его про квантовую физику - получишь внятный ответ. Попроси написать код на Python - без проблем. Но попробуй сыграть с ним в шахматы... И вот тут начинается веселье.
GPT-4 делает ходы, которые нарушают правила. Иногда предлагает поставить короля под шах. Иногда двигает ладью по диагонали. Это как если бы профессор математики не умел складывать 2+2.
А теперь представь модель в 6000 раз меньше. Всего 50 миллионов параметров против 300+ миллиардов у GPT-4. И она играет в шахматы лучше. Намного лучше.
Что скрывается под капотом
Архитектура - классический nanoGPT. Тот самый, что Андрей Карпати использовал для обучения Shakespeare GPT. Просто вместо текстов Шекспира - миллионы шахматных партий в PGN формате.
PGN - это Portable Game Notation. Текстовый формат записи шахматных партий. Выглядит так:
1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 d6Модель учится предсказывать следующий ход в последовательности. Как автодополнение в телефоне, только для шахмат.
| Параметр | Chess GPT | GPT-4 |
|---|---|---|
| Параметры | 50 миллионов | ~1.76 триллиона |
| Обучение | Только шахматы | Вся интернет-энциклопедия |
| Правильные ходы | ~95% | ~70% |
| Размер модели | 200 МБ | Гигабайты |
Запускаем на своей машине
Самое приятное - модель весит всего 200 МБ. Запускаешь на ноутбуке пятилетней давности. Никаких облаков, подписок, лимитов.
1Устанавливаем зависимости
pip install transformers torch2Загружаем модель с HuggingFace
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
model_name = "mlabonne/chess-gpt"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)3Генерируем ходы
def get_next_move(position, temperature=0.7):
inputs = tokenizer(position, return_tensors="pt")
with torch.no_grad():
outputs = model.generate(
inputs.input_ids,
max_length=inputs.input_ids.shape[1] + 10,
temperature=temperature,
do_sample=True,
pad_token_id=tokenizer.eos_token_id
)
return tokenizer.decode(outputs[0], skip_special_tokens=True)
# Пример: начало партии
position = "1. e4 e5 2. Nf3"
next_move = get_next_move(position)
print(f"Следующий ход: {next_move}")Температура сэмплирования - ключевой параметр. При temperature=0.0 модель всегда выбирает самый вероятный ход (предсказуемо, как Stockfish). При temperature=1.0 начинает "творить" - иногда гениально, иногда абсурдно.
Температурные качели
Поиграй с температурой - увидишь всю прелесть специализированных моделей.
Temperature=0.2: "2... Nc6" (стандартный ответ, как в учебниках)
Temperature=0.8: "2... d6" (менее популярный, но солидный ход)
Temperature=1.5: "2... f5?!" (агрессивный контргамбит, рискованный)
А теперь попробуй то же самое с ChatGPT. Попроси его сыграть в шахматы с температурой 1.5. Он начнет генерировать... эээ... "2... Король вперед на три клетки"?
Вот в чем фишка. Общая LLM пытается быть логичной во всем. Специализированная модель знает только шахматы. Ее "творчество" ограничено правилами игры. Она не предложит ход, которого нет в PGN базе.
Почему это работает
Доменное обучение. Вместо того чтобы пытаться знать все понемногу, Chess GPT знает одну вещь идеально.
Токенизация PGN. Каждый ход - это отдельный токен. Модель не "понимает" шахматы в человеческом смысле. Она просто выучила статистику: после "1. e4 e5 2. Nf3" чаще всего следует "Nc6".
Маленький словарь. Всего 1000+ уникальных токенов (ходов). Против 100 000+ у общих моделей. Легче учиться, меньше шума.
Как говорится в нашей статье про локальные модели против GPT-4, иногда специализация бьет масштаб.
Чем это не является
Chess GPT - не шахматный движок. Не жди от нее расчета вариантов на 20 ходов вперед. Это не Stockfish, не AlphaZero.
Это языковая модель, которая играет в шахматы. Как человек, который выучил миллионы партий и теперь интуитивно чувствует, какой ход "правильный".
Она делает ошибки. Иногда предлагает слабые ходы. Но никогда - нелегальные. И в этом ее преимущество над ChatGPT.
Кому это нужно
- Разработчикам игр: Встроить шахматного ИИ в мобильное приложение без облачных API
- Тренерам: Генерировать учебные позиции с разной степенью "творчества"
- Исследователям: Экспериментировать с доменным обучением на маленьких моделях
- Любителям шахмат: Иметь всегда доступного партнера для игры
Особенно интересно сравнить с другими нишевыми инструментами из нашей подборки 4 нишевых ИИ-инструмента. Тренд очевиден: вместо одного монстра - россыпь специалистов.
Что дальше
Представь такие же модели для других игр. Go GPT. Poker GPT. Даже для "Сапера" можно сделать специализированную версию.
Или для программирования - как IQuest-Coder-V1 40B, только меньше и дешевле.
Будущее не за гигантскими моделями, которые знают все плохо. Будущее за сетью маленьких экспертов, каждый из которых знает свою область идеально.
Прямо как в том старом анекдоте: "Зачем тебе профессор, который знает 100 языков по одному слову? Дай мне 100 человек, каждый из которых знает один язык идеально."
Chess GPT - первый из этой сотни. Играешь?