W&B на GX10: проследяване на експерименти
Когато обучаваш или оценяваш модел, след десетина опита вече не помниш кой с какви настройки е дал кой резултат. Weights & Biases записва всеки опит (run) с настройките и метриките му, за да ги сравниш. Тук го свързваме със скрипт на GX10, работим и без мрежа и пускаме автоматично търсене на настройки.
config не беше дефинирана, а wandb.agent.run(...) не е част от интерфейса — сега е wandb.agent(...). Махнахме неизвестното: предупреждения към Slack, регистър на модели, интеграция с LLaMA Factory и автоматичния „data flywheel“ — не са сверени, а блупринтът на NVIDIA за него е оттеглен. Добавихме: къде отиват данните (облак срещу офлайн), как се пази ключът и защо sweep и run трябва да са в един проект.
wandb на Arm64 и как се синхронизира офлайн работа.01Какво ще научиш
- Какво е run, проект и sweep в W&B.
- Как да създадеш ключ и да влезеш, без да го оставяш в код.
- Как да запишеш настройки и метрики от свой скрипт.
- Какви данни напускат машината и как да работиш офлайн.
- Как да пуснеш автоматично търсене на настройки (sweep).
02Преди да започнеш
- Машина от класа NVIDIA GB10 (например ASUS Ascent GX10 или DGX Spark) или всеки компютър с Python 3 и
pip. - Акаунт в Weights & Biases и API ключ. По документацията към 03.10.2026 акаунтът се създава през платформата Forge (docs.wandb.ai сега препраща към документацията на CoreWeave) — имената може да се сменят.
- Скрипт за обучение или оценка, който да следиш. Ако нямаш, примерът по-долу симулира обучение.
wandb/local) е споменато в документацията на променливите; в този урок не го разглеждаме.03Стъпки
-
Създай API ключ
Влез в таблото, отвори профила си → User settings → API keys → New key, дай име и копирай ключа веднага. Защо веднага: целият ключ се показва само веднъж; после виждаш само началото му и при загуба правиш нов.
✅Ключът е тайнаНе го пиши в скрипта, в Git или в страница. Дръж го в променлива на средата или в мениджър на пароли. Ако изтече — изтрий го от таблото и създай нов. -
Инсталирай и влез
Виртуална среда държи пакетите на проекта отделно от системата.
bashpython3 -m venv .venv . .venv/bin/activate pip install wandb wandb login # поискай ключаЗа автоматизирани среди ключът се подава с
export WANDB_API_KEY=<ключ>преди скрипта (променливата е описана в документацията). ⚠️ Не сме проверявали инсталацията на Arm64. -
Първият run
wandb.init()започва run: даваш проект и речник с настройки. Всичко, което записваш сrun.log(), става диаграма в таблото. Примерът е от бързия старт на W&B и симулира обучение:python · first_run.pyimport wandb import random wandb.login() project = "my-awesome-project" config = {"epochs": 10, "lr": 0.01} with wandb.init(project=project, config=config) as run: offset = random.random() / 5 for epoch in range(2, config["epochs"]): acc = 1 - 2**-config["epochs"] - random.random() / config["epochs"] - offset loss = 2**-config["epochs"] + random.random() / config["epochs"] + offset run.log({"accuracy": acc, "loss": loss})Пусни го няколко пъти и в таблото ще видиш няколко runs със случайни имена. В свой скрипт сложи същото
run.log({...})на мястото, където получаваш загубата (loss) на всяка стъпка. -
Сравни runs
В таблото отвори проекта: колоната „Runs“ ги изброява, а диаграмите наслагват метриките. Смисълът на настройките в
configе тук — можеш да видиш койlrе дал по-ниска загуба. По документацията има и диаграма на паралелни координати и анализ на важността на параметрите (⚠️ не са опитвани от нас). -
Работа без изпращане: офлайн режим
Ако скриптът не бива да стига до интернет или данните не бива да излизат, задай променливата преди пускане:
bashexport WANDB_MODE=offline # запазва метаданните локално, без синхронизация python first_run.py # WANDB_MODE=disabled изключва W&B напълноКак се качват офлайн runs по-късно, е описано в документацията на W&B; не сме го пробвали, затова не даваме команда.
-
Sweep: автоматично търсене на настройки
Sweep пробва различни стойности на настройките и записва run за всяка. Описваш пространството на търсене, регистрираш sweep и пускаш „агент“, който извиква твоята функция. Примерът е от урока на W&B:
python · sweep.pyimport wandb def objective(config): score = config.x**3 + config.y return score def main(): with wandb.init(project="my-first-sweep") as run: score = objective(run.config) run.log({"score": score}) sweep_configuration = { "method": "random", "metric": {"goal": "minimize", "name": "score"}, "parameters": { "x": {"max": 0.1, "min": 0.01}, "y": {"values": [1, 3, 7]}, }, } sweep_id = wandb.sweep(sweep=sweep_configuration, project="my-first-sweep") wandb.agent(sweep_id, function=main, count=10)⚠️Един проект за sweep и runsИмето на проекта въвwandb.init()трябва да е същото като вwandb.sweep(). Ако ползвашmultiprocessing, обвийwandb.sweep()иwandb.agent()вif __name__ == "__main__":. Агентът се спира сCtrl+C(втори път — за край).Методът тук е
random. Другите методи и настройки са в раздела „Define sweep configuration“ на документацията (не е отварян от нас). -
Какво още има
Бързият старт сочи още: следене на модели и набори от данни с Artifacts, споделяне в Registry и отчети. За приложения с езикови модели същият доставчик има W&B Weave. Нищо от тях не е пускано в този урок.
04Проверка
- Ключът е създаден и не е в код, Git или страница.
wandb loginминава и първият run се вижда в таблото с поне две метрики.- Знаеш какви данни не бива да записваш в облачната услуга.
- Sweep от няколко runs е приключил и runs са сравнени.
Тест
1. Коя функция започва нов run?
2. Как караш скрипта да не изпраща данни към облака?
3. Къде е правилно да стои API ключът?
4. Какво важи за проекта при sweep?
05Какво следва
06Източници
- Weights & Biases: бърз старт 🌐 глобален — ключ, инсталация, първи run; сверено 03.10.2026.
- W&B: урок за sweeps — конфигурация,
wandb.sweep,wandb.agent; сверено 03.10.2026. - W&B: променливи на средата —
WANDB_API_KEY,WANDB_MODE,WANDB_BASE_URL. - NVIDIA: AI Observability for Data Flywheel — страница на оттегления блупринт; хранилище.