百度AI Studio用gpu版tensorflow/pytorch

AI Studio[1] 可以用 GPU,探索下装 gpu 版 tensorflow 和 pytorch。
好像已经不行了,见其 2020-05-15 号 AI Studio临时升级公告

Environment

系统:Ubuntu 16.04(uname -acat /etc/issue);
开 gpu 环境,可调nvidia-smi。driver version:396.37;在 /usr/local 可见 cuda-9.2/;显存:16160MiB。

Persistent Directory

有 3 个持久化目录可以放自己东西:

  • ~,即 /home/aistudio/
  • ~/work/,放代码,有 100G 空间[2]
  • ~/external-libraries/,这个要自己 mkdir,放自己装的软件;

没用的东西可以弃掉,开环境会自动同步文件,耗时,有时不成功要重试几次。

Independent Projects’ Spaces

好像…每个项目都是独立的空间,新开一个项目发现之前配的环境全都没了。
而且原来它本来就有 conda,不过应该不在持久化目录,还是自己装个 miniconda 吧。

Miniconda

页面上的 上传文件 不能超过 30M,要用 wget 下。Anaconda 太大了,换成 Miniconda[7],装在 external-libraries/ 下。
推荐:下载好 Anaconda/Miniconda,放在一个自己创建的数据集中,开新项目的时候挂载这个数据集,就不用每次都下载一次了。见 Custom Data
装的时候会改 .bashrc 文件,要备份!因为每次启动环境 .bashrc 就会重置,要用这个备份的 .bashrc 替换 ~ 下的 .bashrc,并 source .bashrc 一次。
换 conda 源成清华源[8],自建 .condarc,也要备份,因为重开环境会消失。

cuda

曾经以为要自己装 cuda、cudnn 这些,其实不用,CUDA_HOME 用设,$LD_LIBRARY_PATH用改。所以参考 [9-11, 13] 可以忽略。

GPU Test

我开了虚拟环境 dlconda create -n dl python=3.6,在里面装 tensorflow 和 pytorch,选版本的时候可以参考 [12] 和 pytorch 官网给出的安装命令。
[2] 说自己装了其它库在 external-libraries/ 的话,要在代码前面加两句:

import sys
sys.path.append('/home/aistudio/external-libraries')

而我在虚拟环境里运行的时候,发现好像并不需要

TensorFlow

安装:conda install -n dl tensorflow-gpu==1.12.0

testing code

#import sys
#sys.path.append("/home/aistudio/external-libraries")
import tensorflow as tf
from tensorflow.python.client import device_lib

print(tf.__version__)

print("\ngpu availiable:\n", tf.test.is_gpu_available())
local_devices = device_lib.list_local_devices()

# 打印所有设备名
print("\nlocal devices:")
print("#devices:", len(local_devices))
for dev in local_devices:
    print(dev)

# 打印 gpu 名字
print("\ngpu name:\n", tf.test.gpu_device_name())

x = tf.constant([[1, 2, 3]], dtype="float32")
w = tf.constant([
    [1, 2, 3], [4 ,5, 6], [7, 8, 9]], dtype="float32")
for i in range(10):
    x = tf.matmul(x, w)
out = x

with tf.Session(config=tf.ConfigProto(log_device_placement=True)) as sess:
    print("out:", sess.run(out))

其中,tf.ConfigProto(log_device_placement=True) 可以打印出每个 tensor 放在哪里设备,可以检测它是不是放在 gpu 上。
我还另开一个终端,一边执行,一边在另一个终端多次执行 nvidia-smi,发现 gpu 显存占用,应该是成功了吧?

Pytorch

安装:conda install pytorch torchvision cudatoolkit=9.2 -c pytorch

testing code

import torch
flag = torch.cuda.is_available()
print(flag)

ngpu= 1
# Decide which device we want to run on
device = torch.device("cuda:0" if (torch.cuda.is_available() and ngpu > 0) else "cpu")
print(device)
print(torch.cuda.get_device_name(0))
print(torch.rand(3,3).cuda()

如法测试,也可以。

Custom Data

自己的数据集可以创建数据集,然后挂到项目下[2]。单个文件限 10G。
在这里插入图片描述
另外,项目里上传文件有 30M 大小限制,估计只是用来传代码的,太大的文件也可以通过创建数据集的方式进行。上传的文件需要保存就放到持久化目录。

Codes Updating

代码更新比较麻烦,不能在线编辑。
可以在 Gitee 开 repo 做中转站,本地写好 push 上去,再在 AI Studio 的项目里那 clone 和 pull,虽然有点曲折…
需要用到 ssh 免密登录,参考 [16]。记得备份生成在 ~/.ssh/ 下的 id_rsaid_rsa.pub 两个文件,因为重开项目又会消失,这样就可以重用在 gitee 添加的 SSH key。这两个文件的权限要设成 400,否则报错,参考 [17]。

branchs

如果 git 里开了分支,比如 dev 分支,push 的时候可以:git push origin dev:dev,或者如果本地 git 本身就在 dev 下,可以简写:git push origin dev
pull 的时候:git pull origin dev:dev,或者 ai studio 的 git 本身就在 dev 下,可以简写:git pull origin dev。参考 [19]。
clone 某个分支,用--branch参数:git clone--branch <BRANCH_NAME><REPO>

multiple remote repositories

远程仓库的别名一般叫 origin,但关联多个远程仓库(如 github 和 gitee)时,可以改易于分辨的别名。
例如一个仓库同时关联 github 和 gitee 的一个仓库,分别取别名 githubgitee

  • git remote addgithubgit@github.com:某
  • git remote addgiteegit@gitee.com:某

push/pull 的时候分别名操作:

  • git pullgithubmaster:master
  • git pushgiteedev:dev

clone

clone 时取别名用-ogit clone-o <ALIAS><REPO>
如果有多个分支,如 dev,则 clone 之后用 git checkout -b dev origin/dev 拉下来,同时绑定了本地 dev 和 远程 origin/dev 的 track 关系,可以直接用 git push/pull 而不用加参数[20]。(我之前直接用git pull gitee dev:dev 会出现奇怪的事情,就是拉下来的 dev 中的内容会影响到 master 的内容,然后…一顿莫名其妙)

Auxiliary Scripts

将初始化环境的命令写入 shell 文件,方便执行:

#!/bin/bash
# init.sh

echo "init env..."
cd

# .bashrc
rm .bashrc
cp work/bashrc.bak .bashrc
source .bashrc  # 这句好像没有效果?

# .condarc
cp work/condarc.bak .condarc

# .ssh
mkdir .ssh
cp work/id_rsa .ssh
cp work/id_rsa.pub .ssh

echo "finish"

要执行 source 那行需要用 bash(ubuntu 默认 sh 是 dash),见 [18],但似乎不见效果?手动 source 一次。

References

  1. AI Studio
  2. 常见问题
  3. 白嫖百度 Tesla V100 笔记(在 AI Studio 上使用 tensorflow 和 pytorch 的方法)
  4. 百度paddlepaddle平台如何配置tensorflow-gpu?
  5. 百度 AI Studio 使用记录
  6. AI Studio下如何跑tensorflow
  7. Miniconda
  8. Anaconda 镜像使用帮助
  9. CUDA Toolkit 9.0 Downloads
  10. ImportError: libcuda.so.1: cannot open shared object file: No such file or directory #34872
  11. libcuda.so.1 | CSDN 下载
  12. tensorflow CUDA cudnn 版本对应关系
  13. what is XLA_GPU and XLA_CPU for tensorflow
  14. tensorflow-gpu测试代码
  15. pytorch:测试GPU是否可用
  16. 远程仓库
  17. SSH Key: “Permissions 0644 for ‘id_rsa.pub’ are too open.” on mac
  18. Getting a ‘source: not found’ error when using source in a bash script
  19. git push & git pull 推送/拉取分支
  20. git 拉取远程指定分支 pull本地不存在的分支
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值