reload_flag=""
if [[ -n "${DEBUG}" ]]; then
reload_flag="--reload"
fi
if [[ -n "${WORKER_COUNT}" ]]; then
workers=${WORKER_COUNT}
else
workers=2
fi
gunicorn --workers ${workers} \
--bind 0.0.0.0:8000 \
${reload_flag} main.wsgi
Писали такие конструкции чтобы проверить наличие флага и сформировать команду правильно?
На самом деле можно сделать тоже самое проще. Для этого используются операторы условной подстановки, доступные в оболочках семейства POSIX.
:- для установки значений по умолчанию
${WORKER_COUNT:-2}
Если переменная не объявлена, то будет дефолтное значение 2.
:+ подставляет указанный текст, если переменная не пуста
${DEBUG:+--reload}
Если что-то есть в переменной то распечатается текст после символа +, в противном случае - ничего. Удобно для опциональных флагов, как в нашем примере.
Итого наш скрипт может выглядеть так:
gunicorn --workers ${WORKER_COUNT:-2} \
--bind 0.0.0.0:8000 \
${DEBUG:+--reload} main.wsgi
Есть еще два оператора.
:= не только подставить дефолтное значение, но и присвоить его переменной, если она пуста
# никаких переменных еще нет
VAL1=${VAL2:=hello}
# теперь доступны обе
echo $VAL1 $VAL2
# hello hello
:? остановить выполнение с ошибкой, если переменной нет.
echo ${MISS:?is required}
bash: MISS: is required
Код выхода будет 1.
#tricks#linux
🔥 Сенсей Карпаты выложил новый репозиторий - полный пайплайн обучения LLM с нуля
В проекте есть всё, чтобы собрать свой ChatGPT-клон за $100 и 4 часа:
> • токенизатор (написан на Rust)
> • pretraining
> • SFT (supervised fine-tuning)
> • RL (reinforcement learning)
> • оценка модели (eval)
Всего 8 000 строк кода, без лишних зависимостей - идеальный учебный пример, чтобы понять, как реально устроено обучение больших языковых моделей.
💡 Это проект из его нового грядущего курса LLM101n, и отличная возможность прокачать свои ML-навыки на практике.
Можно арендовать GPU в облаке и запустить всё самому - код уже готов к запуску.
Если запустить обучение модели nanochat на облачном GPU-сервере (например, 8×H100), то примерно через 12 часов обучения (стоимость ~300–400 $) модель достигает уровня GPT-2 по качеству на тестовых наборах (CORE-score).
А если тренировать около 40 часов (затраты ~1000 $), решает простые задачи по математике и коду, набирая:
- 40+ на MMLU
- 70+ на ARC-Easy
- 20+ на GSM8K
🧠 Это бесплатная практика топ уровня от мастера, которую не стоит упускать.
🟠GitHub:https://github.com/karpathy/nanochat
🟠Технические детали:https://github.com/karpathy/nanochat/discussions/1
@ai_machinelearning_big_data
#LLM#nanochat#MachineLearning#DeepLearning#AI#GPT
🔥 Nanochat D32 : микромодель Карпаты за $1000, которая реально работает
Карпаты написал, что завершил обучение Nanochat D32, обученной за 33 часа при бюджете $1000 (вместо $100).
Результаты - удивительно хорошие для такой «крошки»:
- 📈CORE score: 0.31 (выше, чем у GPT-2 — ~0.26)
- 🧮GSM8K: с 8% до 20%
- 🚀 Рост виден на всех этапах - pretraining, SFT и RL
Карпати пишет:
> «Не ждите от микромоделей чудес. Они обходятся $100–$1000, а не миллиарды долларов, как у крупных лабораторий.
> Разговаривать с моделью - как с ребёнком из детсада: они милые, ошибаются, путаются, галлюцинируют, но это весело.»
💡Факты:
- Nanochat тренируется с нуля
- Самая маленькая модель Nanochat содержит примерно в тысячу раз меньше параметров, чем GPT-3.
- Обнолвенный скрипт run1000.sh уже доступен в репозитории
📎 Подробности и отчёт:
https://github.com/karpathy/nanochat/discussions/8
Карпати уже тестирует веб-чат с моделью (ссылку не публикует, чтобы не обвалили сервер).
Дальше -оптимизация и возможно, переход к следующему уровню масштабирования.
#AI#LLM#Nanochat#Karpathy#AIresearch#OpenSourceAI
🧠 Карпаты показал, как добавить новую функцию в мини-LLM nanochat d32, сравнив её «мозг» с мозгом пчелы.
Он обучил модель считать, сколько раз буква r встречается в слове strawberry, и использовал этот пример, чтобы показать, как можно наделять маленькие языковые модели новыми навыками через синтетические задачи.
Сначала генерируются диалоги:
«Сколько букв r в слове strawberry?»
и правильные ответы.
После этого модель проходит дообучение (SFT) или обучение с подкреплением (RL), чтобы закрепить навык.
Карпаты объясняет, что для маленьких моделей важно продумывать всё до мелочей, как разнообразить запросы, как устроена токенизация и даже где ставить пробелы.
Он показывает, что рассуждения лучше разбивать на несколько шагов, тогда модель легче понимает задачу.
Nanochat решает задачу двумя способами:
— логически, рассуждая пошагово;
— через встроенный Python-интерпретатор, выполняя вычисления прямо внутри чата.
Идея в том, что даже крошечные LLM можно «научить думать», если правильно подготовить примеры и синтетические данные.
📘 Разбор: github.com/karpathy/nanochat/discussions/164
@ai_machinelearning_big_data
#AI#Karpathy#Nanochat#LLM#SFT#RL#MachineLearning#OpenSource