caffe基本不更新了,而且caffe2也已经是pytorch的一部分了。如果想考古可以用用caffe,但是如果时间比较紧的话还是学学Pytorch吧,大势所趋
去年双十一前, 苦苦对比买了台组装机,最终因为贪图便宜300块钱选择了AMD的处理器和显卡。后来才发现CUDA是英伟达公司开发的,AMD显卡的架构不一样所以不能使用。而我心心念念的Caffe官网上只有关于CUDA的安装使用教程,但是好在AMD公司自己也开发了ROCm来和CUDA对标,虽然比CUDA小众很多但是好在买的显卡不至于只能用来打游戏。
之前有些买AMD显卡的选择安装各个神经网络的Opencl版本,但是毕竟没有专门用来深度学习工具的香。
如果还不了解OpenCL和CUDA是什么可以参考下面这个短文
CUDA和OpenCL的区别
本文主要参考ROCm官网,半搬运文章 https://rocm.github.io/
更新:官网上的引导教程有错误,我已经在GitHub上提交了,虽然GitHub上改了但是网站上估计还有一段时间。嘿嘿嘿 可以在direct contributors找到我
首先看看自己的显卡是否支持ROCm ,在这个网页里ROCm硬件支持列表
搜索自己显卡的型号,如果在可使用的列表内那可以继续看本文,如果在不支持的列表内,关闭本网页就好了。
(1)首先将ROCm存储库地址添加到系统
wget -qO - http://repo.radeon.com/rocm/apt/debian/rocm.gpg.key | sudo apt-key add -
echo 'deb [arch=amd64] http://repo.radeon.com/rocm/apt/debian/ xenial main' | sudo tee /etc/apt/sources.list.d/rocm.list
然后更新一下库,并且安装ROCm的核心组建 romc-dkms (下载大小500m解压后大小在2G+)需要等一段时间
sudo apt update
sudo apt install rocm-dkms
(2)检查自己是否在用户组里,因为必须有权限才能调用硬件GPU(如果是自己的个人电脑只有一个账户那肯定在里面)
groups
添加用户代码(其中LOGNAME是你的用户名,自动补全应该能显示)
sudo usermod -a -G video $LOGNAME
也可以把全部用户加入进来
//非必要命令行,注意条件
echo 'ADD_EXTRA_GROUPS=1' | sudo tee -a /etc/adduser.conf
echo 'EXTRA_GROUPS=video' | sudo tee -a /etc/adduser.conf
(3)检查是否安装成功(检查前最好重启电脑)
/opt/rocm/bin/rocminfo
/opt/rocm/opencl/bin/x86_64/clinfo
分别运行这两行,看看有没有自己的显卡信息 而且没有红色的报错
然后把ROCm添加到系统环境里面
echo 'export PATH=$PATH:/opt/rocm/bin:/opt/rocm/profiler/bin:/opt/rocm/opencl/bin/x86_64' | sudo tee -a /etc/profile.d/rocm.sh
(4)选装
交叉编译
在不同的系统上进行开发和测试通常很有用。例如,某些开发或构建系统可能未安装AMD GPU。在这种情况下,您可能希望避免在开发系统中安装ROCK内核驱动程序。
在这种情况下,请安装软件包的开发子集:
sudo apt update
sudo apt install rocm-dev
(5)安装caffe部分
sudo apt-get install rocm-libs
sudo apt-get install miopen-hip miopengemm
sudo apt-get install -y \
g++-multilib \
libunwind-dev \
git \
cmake cmake-curses-gui \
vim \
emacs-nox \
curl \
wget \
rpm \
unzip \
bc
(6)检查安装情况
cp -r /opt/rocm/hip/samples ~/hip-samples && cd ~/hip-samples/0_Intro/square/
make
./square.out
(第三行官网上写的生成文件名和实际文件名不一样,应该是更新后没有及时改,可以按照我的,最重要的还是依照你make后显示生成的文件名来)运行后应该有显示显卡信息之类
(7)编译程序
cd ~
git clone https://github.com/ROCmSoftwarePlatform/hipCaffe.git
cd hipCaffe
cp ./Makefile.config.example ./Makefile.config
make -j$(nproc)
(make出现warning是没什么问题的)
注意!这里make可能会报错:关于recipe for target ‘.build_release/tools/caffe.bin’ failed
我的原因是使用的是opencv3,解决方法是:把Makefile.config文件里,关于OpenCV的
OPENCV_VERSION := 3
前的#号注释删除掉就好了。
还有一点就是如果一次失败以后,修改过config文件后要执行 make clean 再重新make -j$(nproc) 要不然会有上次错误的信息留下了。
如果执行以后没有报错正常结束,则说明我们的安装成功了。
在hipCaffe目录下:
./data/mnist/get_mnist.sh
./examples/mnist/create_mnist.sh
./examples/mnist/train_lenet.sh
第一行是下载mnist数据集的脚本,终端下载有点慢,也可以自己到官网上下载,放到./data/mnist/文件夹下解压。
第二行是把数据集转化成带标签的训练文件。
第三行是训练。
训练成功会一直输出accrency和loss
例如这样
… …
I1111 22:04:58.524817 15519 solver.cpp:404] Test net output #0: accuracy = 0.9907
I1111 22:04:58.524850 15519 solver.cpp:404] Test net output #1: loss = 0.0291341 (* 1 = 0.0291341 loss)
I1111 22:04:58.524858 15519 solver.cpp:322] Optimization Done.
I1111 22:04:58.524863 15519 caffe.cpp:254] Optimization Done.