M00. Шпаргалка
Окружение, модели и инструменты
Команды курса
| Команда | Что делает |
|---|---|
make help |
все команды |
make setup |
первичная настройка |
make llm-check |
проверка моделей |
make lab M=00 |
JupyterLab в Docker |
make native M=00 |
JupyterLab нативно |
make test M=00 |
проверка упражнений |
make check M=00 |
прогон ноутбуков |
make opencode |
OpenCode с .env |
uv
| Команда | Что делает |
|---|---|
uv sync |
окружение по uv.lock |
uv add pkg |
добавить зависимость |
uv run cmd |
запуск в окружении |
uv python install 3.12 |
поставить Python |
Docker
| Команда | Что делает |
|---|---|
docker compose up -d |
поднять сервисы |
docker compose ps |
что запущено |
docker compose logs -f |
логи |
docker compose down |
остановить |
Из контейнера хост — это host.docker.internal.
Ollama
| Команда | Что делает |
|---|---|
make ollama |
сервер с контекстом 16K |
ollama pull qwen3:8b |
скачать модель |
ollama list |
скачанные модели |
ollama ps |
загруженные в память |
.env
LLM_BASE_URL=... # OpenAI-совм. endpoint
LLM_API_KEY=...
LLM_MODEL=...
LLM_LOCAL_MODEL=qwen3:8b
EMBED_MODEL=bge-m3
LLM_CACHE=on # off|on|record|refresh|replaymlcourse
from mlcourse import (get_client, model_name,
no_thinking, chat, embed)
client = get_client() # роль main
r = client.chat.completions.create(
model=model_name(),
messages=[{"role": "user",
"content": "Привет"}],
extra_body=no_thinking())
r.choices[0].message.content
chat("Привет", role="local") # коротко
embed(["текст 1", "текст 2"]) # [2, 1024]Формулы
Верхняя граница скорости генерации: \[\text{ток/с} \lesssim \frac{\text{пропускная способность, ГБ/с}}{\text{размер весов, ГБ}}\]
Память весов: \(N \cdot b / 8\) байт.
KV-кэш: \(2 \cdot L \cdot H_\text{kv} \cdot d_\text{head} \cdot s \cdot T\) байт.
Ответ модели
| Поле | Смысл |
|---|---|
finish_reason: stop |
закончила сама |
finish_reason: length |
упёрлась в max_tokens |
finish_reason: tool_calls |
зовёт инструмент |
usage |
токены промпта и ответа |
SSE-поток: строки data: {...}, конец — data: [DONE].