Знакът на КАГАМИ КАГАМИ
kagami.bg/academy · lesson · machine-readable viewUPDATED 2026-10-03
IDENTITY
module
GX10-04-100 · Experiment tracking with Weights & Biases
series
GX10 (local AI server class: NVIDIA GB10, e.g. ASUS Ascent GX10 / DGX Spark)
level
Intermediate
duration
45 min
prerequisites
Python 3 with pip, a Weights & Biases account and API key, internet access (or offline mode)
trust_label
UPDATED 2026-10-03 (compared with the current W&B quickstart, sweeps tutorial and environment-variable reference) · NOT TESTED (no GB10 machine available) · commands not run
status_note
NVIDIA marks the "AI Observability for Data Flywheel" blueprint (W&B partner blueprint) as deprecated (checked 2026-10-03). This lesson teaches the W&B SDK itself, not that blueprint
language
human view: bg · english edition: /en/academy/gx10/ (same file name)
previous / next
GX10 series index / 04-101_Safety_Agentic_AI.html
PURPOSE

Record the runs of a model-training or evaluation script (hyperparameters, metrics) in Weights & Biases, compare them, work offline when needed, and automate a hyperparameter search with a sweep.

KEY CONCEPTS
COMMANDS / PATHS
CHECKLIST
NEXT MODULE

04-101 · Safety for agentic AI (04-101_Safety_Agentic_AI.html) · series index: kagami.bg/academy/gx10/ · offer: Quick experiment (kagami.bg/stalbata/)

SOURCES
TAGS
gx10nvidia-gb10wandbexperiment-trackingsweepsobservabilitypython
ОБНОВЕНО · 03.10.2026

W&B на GX10: проследяване на експерименти

Когато обучаваш или оценяваш модел, след десетина опита вече не помниш кой с какви настройки е дал кой резултат. Weights & Biases записва всеки опит (run) с настройките и метриките му, за да ги сравниш. Тук го свързваме със скрипт на GX10, работим и без мрежа и пускаме автоматично търсене на настройки.

⏱ 45 мин Средно GX10 Python · W&B · sweeps
Python · wandb (библиотеката)🔒 локално W&B (услугата и таблото)🌐 глобален
🔄
ОБНОВЕНО · 03.10.2026 — какво
Преработихме урока по текущата документация на W&B (бърз старт, урок за sweeps, променливи на средата). Поправихме кода: в старата версия променливата config не беше дефинирана, а wandb.agent.run(...) не е част от интерфейса — сега е wandb.agent(...). Махнахме неизвестното: предупреждения към Slack, регистър на модели, интеграция с LLaMA Factory и автоматичния „data flywheel“ — не са сверени, а блупринтът на NVIDIA за него е оттеглен. Добавихме: къде отиват данните (облак срещу офлайн), как се пази ключът и защо sweep и run трябва да са в един проект.
⚠️
Блупринтът на NVIDIA е оттеглен
Страницата „AI Observability for Data Flywheel“ на NVIDIA (партньорски блупринт с W&B) към 03.10.2026 гласи „This Blueprint has been deprecated“ и препоръчва преминаване към друго решение. Този урок не го ползва: учи самата библиотека на W&B. Ако ти трябва пълен „data flywheel“, не започвай от този блупринт.
⚠️
Какво не сме пускали сами
Нямахме машина от класа GB10. Кодът е сверен с документацията на W&B, но не е пускан от нас — затова няма етикет „ТЕСТВАНО“. Не сме проверявали как се държи wandb на Arm64 и как се синхронизира офлайн работа.

01Какво ще научиш

02Преди да започнеш

🌐
Къде отиват данните
По подразбиране метриките, настройките и всички записани файлове се изпращат към услугата на W&B — тя е глобална, не локална. Не записвай в нея лични данни, текстове на клиенти или тайни. За работа без изпращане има офлайн режим (стъпка 5). Самостоятелно хостване (wandb/local) е споменато в документацията на променливите; в този урок не го разглеждаме.

03Стъпки

  1. Създай API ключ

    Влез в таблото, отвори профила си → User settings → API keys → New key, дай име и копирай ключа веднага. Защо веднага: целият ключ се показва само веднъж; после виждаш само началото му и при загуба правиш нов.

    ✅
    Ключът е тайна
    Не го пиши в скрипта, в Git или в страница. Дръж го в променлива на средата или в мениджър на пароли. Ако изтече — изтрий го от таблото и създай нов.
  2. Инсталирай и влез

    Виртуална среда държи пакетите на проекта отделно от системата.

    bash
    python3 -m venv .venv
    . .venv/bin/activate
    pip install wandb
    wandb login   # поискай ключа

    За автоматизирани среди ключът се подава с export WANDB_API_KEY=<ключ> преди скрипта (променливата е описана в документацията). ⚠️ Не сме проверявали инсталацията на Arm64.

  3. Първият run

    wandb.init() започва run: даваш проект и речник с настройки. Всичко, което записваш с run.log(), става диаграма в таблото. Примерът е от бързия старт на W&B и симулира обучение:

    python · first_run.py
    import 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) на всяка стъпка.

  4. Сравни runs

    В таблото отвори проекта: колоната „Runs“ ги изброява, а диаграмите наслагват метриките. Смисълът на настройките в config е тук — можеш да видиш кой lr е дал по-ниска загуба. По документацията има и диаграма на паралелни координати и анализ на важността на параметрите (⚠️ не са опитвани от нас).

  5. Работа без изпращане: офлайн режим

    Ако скриптът не бива да стига до интернет или данните не бива да излизат, задай променливата преди пускане:

    bash
    export WANDB_MODE=offline   # запазва метаданните локално, без синхронизация
    python first_run.py
    # WANDB_MODE=disabled изключва W&B напълно

    Как се качват офлайн runs по-късно, е описано в документацията на W&B; не сме го пробвали, затова не даваме команда.

  6. Sweep: автоматично търсене на настройки

    Sweep пробва различни стойности на настройките и записва run за всяка. Описваш пространството на търсене, регистрираш sweep и пускаш „агент“, който извиква твоята функция. Примерът е от урока на W&B:

    python · sweep.py
    import 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“ на документацията (не е отварян от нас).

  7. Какво още има

    Бързият старт сочи още: следене на модели и набори от данни с Artifacts, споделяне в Registry и отчети. За приложения с езикови модели същият доставчик има W&B Weave. Нищо от тях не е пускано в този урок.

04Проверка

Тест

1. Коя функция започва нов run?

2. Как караш скрипта да не изпраща данни към облака?

3. Къде е правилно да стои API ключът?

4. Какво важи за проекта при sweep?

05Какво следва

06Източници

  1. Weights & Biases: бърз старт 🌐 глобален — ключ, инсталация, първи run; сверено 03.10.2026.
  2. W&B: урок за sweeps — конфигурация, wandb.sweep, wandb.agent; сверено 03.10.2026.
  3. W&B: променливи на средата — WANDB_API_KEY, WANDB_MODE, WANDB_BASE_URL.
  4. NVIDIA: AI Observability for Data Flywheel — страница на оттегления блупринт; хранилище.