wandb+腾讯云进行深度学习可视化和超参搜索

修改docker权限

通过将用户添加到docker用户组可以将sudo去掉,命令如下

sudo groupadd docker #添加docker用户组

sudo gpasswd -a $USER docker #将登陆用户加入到docker用户组中

newgrp docker #更新用户组

wandb 配置

在云服务器上开启wandb 镜像

wandb local -e HOST=http://云服务器公网ip:8080 

进入镜像 修改登录账号和密码

docker exec -it wandb-local bash
vi /vol/env/users.htpasswd # Remove the line with local@wandb.com in it #删除这个文件的里面的东西
/usr/local/bin/local password YOUR@EMAIL.COM #这一步会让你设置登录的密码,后面登录的账号就是这个邮箱,登陆密码就是这里设置的密码
exit #退出镜像文件

在自己电脑上进入http://云服务器公网ip:8080
用刚才修改的账号和密码 登录

在wandb.ai的官网获取license
在这里插入图片描述配置license
在这里插入图片描述

wandb 使用

在自己电脑上登录

wandb login --host=http://云服务器IP:8080

测试

>>> import wandb
>>> wandb.init(project='test_local',entity='xxxx')

超参搜索

第一步,向wandb注册config,然后用wandb包装后的config代替原来的config。

import wandb

# Set up your default hyperparameters
hyperparameter_defaults = dict(
    channels=[16, 32],
    batch_size=100,
    learning_rate=0.001,
    optimizer="adam",
    epochs=2,
    )

# Pass your defaults to wandb.init
wandb.init(config=hyperparameter_defaults)
# Access all hyperparameter values through wandb.config
config = wandb.config

# Set up your model
model = make_model(config)

# Log metrics inside your training loop
for epoch in range(config["epochs"]):
    val_acc, val_loss = model.fit()
    metrics = {"validation_accuracy": val_acc,
               "validation_loss": val_loss}
    wandb.log(metrics)

第二步,完成sweep.yaml文件
它的作用是指定训练的脚本,搜索的方法,参数的取值范围,优化的目标,注意这里优化的目标必须在第一步用log进行注册。

program: train.py
method: bayes
metric:
  name: validation_loss
  goal: minimize
parameters:
  learning_rate:
    min: 0.0001
    max: 0.1
  optimizer:
    values: ["adam", "sgd"]

第三步
在多个进程或者多台机器上运行
wandb sweep sweep.yaml
并且每个进程或机器要提前登录wandb
wandb agent <USERNAME/PROJECTNAME/SWEEPID>

early_terminate

wandb中使用的是hyperband算法,其中R是每个参数组上的最多分配的资源,η是下面的算法中, 内循环每一次迭代保留的参数组的比例,默认为3,也就是每轮保留效果最好的1/3. s用来控制内层循环的迭代次数。
在这里插入图片描述
假设总共的资源是81,那么根据s的不同,内循环中最开始采样的参数组数量,及其分配的资源数也不同:
在这里插入图片描述wandb中的eta相当于η, 并且可以指定最高的迭代次数max_iter和s, 假设为max_iter=27,s=2,那么每个内循环中参数组的迭代次数,依次为[27/eta, 27/eta/eta],即[9,3]. 这里的迭代次数指的是调用wandb.log记录优化目标的次数。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值