ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • wandb ์„ค์น˜, ๋กœ๊ทธ์ธ
    ์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ 2024. 3. 10. 15:32
    ๋ฐ˜์‘ํ˜•

    ๋จธ์‹ ๋Ÿฌ๋‹ ์‹คํ—˜ ๊ด€๋ฆฌ ํˆด์—๋Š” TensorBoard, Weights & Biases๊ฐ€ ์žˆ๋‹ค. ์˜ค๋Š˜์€ Weights&Biases์— ๋Œ€ํ•ด ์†Œ๊ฐœํ•œ๋‹ค.

     

     

     

    wandb๋Š” ๋”ฅ๋Ÿฌ๋‹ ์‹คํ—˜ ๊ณผ์ •์—์„œ ์ƒ๊ธธ ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ์ˆ˜์น˜๋“ค (์˜ˆ. loss function, metric)์„ ํŽธ๋ฆฌํ•˜๊ฒŒ ์‹œ๊ฐํ™”ํ•˜๊ณ  ํŠธ๋ž™ํ‚นํ•˜๊ธฐ ์ข‹์€ ํˆด์ด๋‹ค. ์ด๋ฆ„์— ์žˆ๋Š” W์™€ B๋Š” ๋”ฅ๋Ÿฌ๋‹์—์„œ ํ”ํžˆ ์‚ฌ์šฉํ•˜๋Š” W(๊ฐ€์ค‘์น˜), b(ํŽธํ–ฅ)์„ ๋œปํ•œ๋‹ค. Weights and biases๋ฅผ ์ค„์—ฌ์„œ wandb๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

    wandb๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋” ๋น ๋ฅธ ๋ชจ๋ธ ๋นŒ๋“œ๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ณ , training progress๋ฅผ ๋น ์ง์—†์ด ์‹œ๊ฐํ™” ๊ฐ€๋Šฅํ•˜๋‹ค. - architecture, hyperparameter, weights, model prediction, GPU usage, git commits, dataset

     

     

     

    ์ด๋Ÿฌํ•œ ์‹คํ—˜์„ 5์ค„์˜ ์ฝ”๋“œ๋กœ ๊ฐ€๋Šฅํ• ๊นŒ?! ---> "W&B"๋กœ ๊ฐ€๋Šฅํ•˜๋‹ค!

     

     

     

    <Weights & Biases ๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ์ผ>

    • ํ•™์Šต ์‹œ ์‚ฌ์šฉ๋œ ํ•˜์ดํผ ํŒŒ๋ผ๋ฏธํ„ฐ๋“ค์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Œ 
    • ํ•™์Šตํ–ˆ๋˜ ๊ฐ ์‹คํ—˜๋“ค์„ ํƒ์ƒ‰ํ•˜๊ณ , ๋น„๊ตํ•˜๊ณ , ์‹œ๊ฐํ™”ํ•  ์ˆ˜ ์žˆ์Œ
    • ํ•™์Šต ํ™˜๊ฒฝ์˜ ์‹œ์Šคํ…œ์„ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”์ง€ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ์Œ
    • ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค๊ณผ ํ˜‘์—…ํ•  ์ˆ˜ ์žˆ์Œ (๋™๋ฃŒ์™€ ํ–ˆ๋˜ ์‹คํ—˜์„ ๊ณต์œ ํ•˜๊ฑฐ๋‚˜ ํ† ๋ก ํ•  ๋•Œ, ๊ฒฐ๊ณผ ์ด๋ฏธ์ง€๋ฅผ ์บก์ณํ•ด์„œ ๋ณด๋‚ด์•ผ ํ•˜๋Š” ๋“ฑ์˜ ๋ถˆํŽธํ•จ ํ•ด๊ฒฐ)
    • ๊ณผ๊ฑฐ ์‹คํ—˜ ๊ฒฐ๊ณผ๋“ค์„ ๋ณต์ œํ•  ์ˆ˜ ์žˆ์Œ
    • ํ•˜์ดํผ ํŒŒ๋ผ๋ฏธํ„ฐ ํŠœ๋‹์ด ๊ฐ€๋Šฅํ•จ
    • ์‹คํ—˜ํ–ˆ๋˜ ๋ชจ๋“  ๊ธฐ๋ก๋“ค์„ ์˜๊ตฌ์ ์œผ๋กœ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Œ
    • Gradient flow, GPU system ๋ชจ๋‹ˆํ„ฐ๋ง ๋“ฑ
    import wandb
    
    # 1. Start a W&B run
    wandb.init(project='gpt3')
    
    # 2. Save model inputs and hyperparameters
    config = wandb.config
    config.learning_rate = 0.01
    
    # Model training code here ...
    
    # 3. Log metrics over time to visualize performance
    for i in range (10):
        wandb.log({"loss": loss})
    • wandb ๋กœ๊ทธ์ธ
    wandb login

     

    • wandb.config
    wandb.init()
    wandb.config.epochs = 4
    wandb.config.batch_size = 32
    wandb.config.learning_rate = 0.001
    wandb.config.architecture = "resnet"

     

    ๋จธ์‹  ๋Ÿฌ๋‹ ๋ชจ๋ธ์˜ ์—ฌ๋Ÿฌ ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ์™€ ์•„ํ‚คํ…์ฒ˜ ๋“ฑ์„ ์ถ”์ (Tracking๐Ÿ“ˆ)ํ•˜๊ธฐ ์œ„ํ•ด์„œ wandb๋ฅผ ์„ค์ •ํ•˜๋Š” ์ฝ”๋“œ์ด๋‹ค.

    wandb ์ดˆ๊ธฐํ™”๋ฅผ ์œ„ํ•ด wandb.init()์œผ๋กœ ์‹œ์ž‘ํ•œ๋‹ค. ์ด๋Š” wandb ์‹œ์Šคํ…œ์„ ์ดˆ๊ธฐํ™”ํ•˜์—ฌ ์‹คํ—˜ ์ถ”์ ์„ ์‹œ์ž‘ํ•˜๊ฒŒ ํ•œ๋‹ค.

    ์ดˆ๊ธฐํ™”ํ•œ ํ›„, wandb.config๋ฅผ ์‚ฌ์šฉํ•ด ์—ฌ๋Ÿฌ ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ(epochs, batch_size, learning_rate)์™€ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ์„ค์ •๋“ค์€ ๋จธ์‹  ๋Ÿฌ๋‹ ๋ชจ๋ธ์ด๋‚˜ ํ•™์Šต ๊ณผ์ •์˜ ๋‹ค์–‘ํ•œ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๊ธฐ๋กํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.

     

    • PyTorch framework์™€ integrationํ•˜๊ธฐ (framework-agnostic)
    import wandb
    
    # 1. Start a new run
    run = wandb.init(project="gpt4")
    
    # 2. Save model inputs and hyperparameters
    config = run.config
    config.dropout = 0.01
    
    # 3. Log gradients and model parameters
    run.watch(model)
    for batch_idx, (data, target) in enumerate(train_loader):
        ...
        if batch_idx % args.log_interval == 0:
            # 4. Log metrics to visualize performance
            run.log({"loss": loss})

     

    wandb๋Š” ๋‹ค์–‘ํ•œ ๋จธ์‹ ๋Ÿฌ๋‹ ํ”„๋ ˆ์ž„์›Œํฌ์™€ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ๋ฐ, ์œ„์˜ ์˜ˆ์ œ๋Š” PyTorch๋ฅผ ์‚ฌ์šฉํ•œ ์˜ˆ์‹œ์ด๋‹ค.

    ์šฐ์„  wandb๋ฅผ importํ•˜๊ณ  wandb.init()์„ ํ˜ธ์ถœํ•˜์—ฌ ์ดˆ๊ธฐํ™”๋ฅผ ํ•ด์ค€๋‹ค. ์ด๋•Œ ํ”„๋กœ์ ํŠธ ์ด๋ฆ„์„ ์ž…๋ ฅํ•ด์ค€๋‹ค.

    run.config์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋ธ์˜ ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์„ค์ •ํ•œ๋‹ค. 

    run.watch(model)์„ ์‚ฌ์šฉํ•˜์—ฌ Pytorch ๋ชจ๋ธ์˜ ๊ทธ๋ž˜๋””์–ธํŠธ๋ฅผ ์ž๋™์œผ๋กœ loggingํ•˜๊ณ  ๋„คํŠธ์›Œํฌ architecture๋ฅผ ์ €์žฅํ•œ๋‹ค.

    training loop์—์„œ๋Š” ๊ฐ batch์— ๋Œ€ํ•ด ํ•ด๋‹น ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ํŠน์ • ๊ฐ„๊ฒฉ(args.log_interval)๋งˆ๋‹ค ์†์‹ค๊ณผ ๊ฐ™์€ ์ค‘์š”ํ•œ metric์„ run.log({"loss": loss})๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ๊น…ํ•œ๋‹ค.

    ์ด๋ ‡๊ฒŒ ํ•จ์œผ๋กœ์จ, wandb๋Š” pytorch ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋™์•ˆ ๋ชจ๋ธ์˜ ์„ฑ๋Šฅ, ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ, ๊ทธ๋ฆฌ๊ณ  gradient flow๋“ฑ์„ ์ถ”์ ํ•˜๊ณ  ์‹œ๊ฐํ™”ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.

     

    ์ฐธ๊ณ ์ž๋ฃŒ

    https://github.com/wandb/examples

     

    GitHub - wandb/examples: Example deep learning projects that use wandb's features.

    Example deep learning projects that use wandb's features. - wandb/examples

    github.com

     

     

    https://docs.wandb.ai/?_gl=1*czvso2*_ga*MzgzNjU3NTcwLjE2OTY0MDM1NTk.*_ga_JH1SJHJQXJ*MTcwMTIyMDEwMS4yNi4wLjE3MDEyMjAxMDEuNjAuMC4w

     

    W&B Docs | Weights & Biases Documentation

    Weights & Biases is the machine learning platform for developers to build better models faster. Use W&B's lightweight, interoperable tools to quickly track experiments, version and iterate on datasets, evaluate model performance, reproduce models, visualiz

    docs.wandb.ai

     

Designed by Tistory.