Caffe2
来源:互联网 发布:sybase数据库有哪些 编辑:程序博客网 时间:2024/06/09 20:50
Caffe2 Distributed Training分布式训练
Caffe2 最重要的一个特点是,便于分布式训练,无须重构设计即可快速实现网络的伸缩.
进一步学习Caffe2分布式训练的例子,可参考SynchronousSGD, 该材料阐述了Caffe2的data_parallel_model设计规则.
- Gloo - 用于多机训练的通信库
- NCLL - NVIDIA推出的多GPU通信的NCCL库
- Redis - 为了对分布式训练的节点进行有效管理, Caffe2采用NFS在节点间分享数据,或者采用Redis服务器来处理节点间的通信
Caffe2 提供的一个分布式训练实例resnet50_trainer中,可以在单个GPU上运行 resnet50_trainer脚本. 其中,训练数据需要先加载到 lmdb database, 或者LevelDB.
实例
安装成功Caffe2后,分布式训练至少有一个GPU,多个GPU更适合体现其分布式特点.
首先,训练数据库转换成lmdb database, 或LevelDB格式;
resnet50_trainer.py说明:
usage: resnet50_trainer.py [-h] --train_data TRAIN_DATA [--test_data TEST_DATA] [--db_type DB_TYPE] [--gpus GPUS] [--num_gpus NUM_GPUS] [--num_channels NUM_CHANNELS] [--image_size IMAGE_SIZE] [--num_labels NUM_LABELS] [--batch_size BATCH_SIZE] [--epoch_size EPOCH_SIZE] [--num_epochs NUM_EPOCHS] [--base_learning_rate BASE_LEARNING_RATE] [--weight_decay WEIGHT_DECAY] [--num_shards NUM_SHARDS] [--shard_id SHARD_ID] [--run_id RUN_ID] [--redis_host REDIS_HOST] [--redis_port REDIS_PORT] [--file_store_path FILE_STORE_PATH]
- –train_data - 训练数据库的路径
- –test_data - 测试数据库的路径
- –db_type - lmdb或leveldb, 默认lmdb
- –gpus - GPU IDs列表,其中 0 为第一个GPU设备, 多个GPU用逗号’,’隔开
- –num_gpus - GPUs总数,或者gpus列表
- –num_channels - 颜色通道数,默认为3
- –image_size - 输入图像的高和宽的像素值,假设宽和高一样,默认为227, 不能处理小尺寸的
- –num_labels - labels数,默认1000
- –batch_size - batch size,所有GPUs上的总和,默认32,增加GPUs可以增加其值
- –epoch_size - 每个epoch中图像数,默认1.5MM(1500000),可以进行自定义
- –num_epochs - epochs数
- –base_learning_rate - 初始化学习率,默认0.1(基于256个batch size)
- –weight_decay - weight decay(L2 regularization)
- –num_shards - 分布式运行的机器数,默认1
- –shard_id - shard/node id,默认为0,下一个node为1,以此
- –run_id RUNID - 唯一运行码, e.g. uuid
- –redis_host - Redis服务器的host(for rendezvous)
- –redis_port - rendezvous的Redis端口
- –file_store_path - alternative to Redis, (NFS) path to shared directory to use for rendezvous temp files to coordinate between each shard/node
testing用到的参数:
- 1. –train_data[必需]
- 2. –db_type[默认lmdb]
- 3. –num_gpus<#> [使用该方式,替代利用 –gpus列出各gpu的方式]
- 4. –batch_size[默认为32]
- 5. –test_data [可选]
唯一一个必须要提供的参数是训练数据库. 其调用方式为,其它参数默认:
python resnet50_trainer.py --train_data <location of lmdb training database>
使用LevelDB:
python resnet50_trainer.py --train_data <location of leveldb training database> --db_type leveldb
默认batch_size均为32. 如果采用2个GPU,需要根据GPU数来增加batch_size,以更多的利用GPU显存,此时,batch_size=64:
python resnet50_trainer.py --train_data <location of lmdb training database> --num_gpus 2 --batch_size 64
增加一个GPU,可以加倍batch size,每各epoch的迭代数减半.
采用 nvidia-smi查看GPU状态,* watch -n1 nvidia-smi*可在多个experiments时连续记录GPU状态.
加入 –test_data 参数,可以监督网络训练的效果,给出accuracy,便于分析收敛情况.
日志 Logging
运行训练程序时,在同文件夹内会生成log文件,该文件记录了在不同参数时的状态. 比如,
resnet50_gpu2_b64_L1000_lr0.10_v2_20170411_141617.log
从该文件名可以得出:
- –gpus 2
- –batch_size 64
- –num_labels 1000
- –base_learning_rate 0.10
以时间戳排列.
log文件中,记录的值有:
- time_spent
- cumulative_time_spent
- input_count
- cumulative_input_count
- cumulative_batch_count
- inputs_per_sec
- accuracy
- epoch
- learning_rate
- loss
- test_accuracy[如果没有test data,该值默认为-1,反之,输出accuracy值]
- Caffe2
- Caffe2
- 关于caffe2
- Caffe2简介
- caffe2 介绍
- caffe2 安装
- Caffe2 入门教程
- 初识caffe2
- caffe2 安装
- caffe2 三: Basics of Caffe2
- Caffe2:ubuntuKylin17.04使用Caffe2.LSTM
- caffe2 安装与介绍
- caffe2 安装与介绍
- caffe2 树莓派使用
- ubuntu14.04安装caffe2
- 写在caffe2 的开始
- caffe2 安装教程
- Caffe 与 Caffe2
- 欢迎使用CSDN-markdown编辑器
- Centos7+可视界面+Apache+php+mysql环境搭建,踩了坑过来的
- 面试心得 --- GridSum(国双)算法工程师
- Smoke test,Sanity test,Regression test之间的区别
- Android 7.0 自动安装APK及拍照崩溃问题
- Caffe2
- Redis 安装以及基本使用
- 进阶4_更深入的了解AdapterView
- android 全局无标题透明dialog
- Android自定义RatingBar
- Spring实战4之SpringMVC高级篇
- Opencv HOG特征函数简介
- windows下vue-cli及webpack 构建网站及 路由vue-router的使用
- strncmp, strncat, strncpy函数的定义与实现