实战 Google Colab,一起用 GPU

简介: 今天一起来看看尝试下 Google Colab 工具,一款由 Google 出品,免费面向大众的、可使用 GPU、TPU 来训练模型的给力在线工具!!

初识 Google Colab


首先,你需要有一个 Google 账号,然后访问下面的网址,登陆谷歌账号即可。

https://colab.research.google.com/notebooks/welcome.ipynb

(可能某些小伙伴需要梯子,不过相信这些都难不倒勇于探索的你。)

Google Colab 是基于 Jupyter 编辑器的云端运行环境,意味着我们可以共享代码给其他人共同享用。

打开 Colab 页面后,我们可以自己创建一个 Python 记事本,当然也可以上传在本地写好的 ipynb 或 py 文件,具体如下图:

image.png

然后我们点击 “代码执行程序” 标签页,选择 “更改运行时类型”,就会弹出笔记本设置框,这里就可以选择是否使用 GPU 还是 TPU 或是不使用任何,看到这里,是不是瞬间感觉自己富有了很多,毕竟由 GPU 可以使用了啊!


连接自己的 Google 云盘


首先,你应该已经有了一个 Google 账号。

在新创建的 Jupyter 记事本中,输入如下的代码,并运行,结果如下:

image.png

这是出现了一个链接,点击该链接,授权账号登陆,将授权码复制并粘贴到图中的输入框中。

image.png

接下来肯能会需要第二次授权,同样的操作。

之后,挂载 Google Drive

就像在真实的 Linux 操作系统上一样(其实 Colab 就是一个真实的 Linux 虚拟机),创建 drive 文件夹,并挂载

image.png

最后我们验证下,看看是否成功连接到自己的 Google 云盘了

image.png

查看 drive 文件夹,可以看到里面就是自己云盘上已经放置的文件。


从 Colab 下载文件


既然我们准备用 Colab 来训练模型,那么训练好的模型肯定是要保存在自己本地的,因为 Colab 为我们分配的虚拟机资源,一段时间就会回收。

其实不用慌,Colab 肯定也是提供了方便的下载途径的。

WAY 1.点开左侧的箭头按钮,选择文件 tab 页,就可以看到当前虚拟机下的所有文件,如:

image.png

我们选择 adc.json,右击选择 “下载”,就能通过浏览器下载该文件了

WAY 2.使用 Google Colab 提供的 API,其中有 files 这个库,直接使用 download 方法来下载

image.png


实战训练电影推荐模型


这里使用开源的项目:https://github.com/chengstone/movie_recommender

下载项目中的 movie_recommender.ipynb 文件,导入到 Colab 中,然后一步步的执行,等待模型训练好后,下载到本地即可。不得不说,使用 GPU,模型训练的就是快!

训练好模型后,当然时部署成服务,供自己学(装)习(逼)了,开干。


一、使用 Docker 安装 tensorflow

我使用的是 CentOS 服务器,具体的安装方法直接参考这里

https://www.runoob.com/docker/centos-docker-install.html

Docker 服务安装好之后,使用如下命令拉取镜像

1docker pull tensorflow/tensorflow:1.13.1-py3


至于为什么用 1.13.1 版本,因为 Google Colab 里默认的版本就是这个,所以这里就使用相同的版本了,为了避免发生一些未知的版本匹配问题。

下面用如下命令启动 docker

1docker run --name my-tensorflow -it -p 8888:8888 -v ~/tensorflow:/test/data tensorflow/tensorflow


将 Docker 容器中的 8888 端口映射到宿主机的 8888 端口上,这样,我们就能在外部访问容器中的 8888 端口服务了。


二、编写 Flask 服务

相关的推荐逻辑,都是按照这个开源项目已经提供好的,我们只有保证让 Flask 服务启动在 8888 端口即可,部分代码如下:

@app.route('/sametypemovie/<int:movieid>', methods=['GET'])
 def sametypemovie(movieid):
     data = recommend_same_type_movie(movieid)
     return jsonify(data), 200
 @app.route('/yourfavmovie/<int:userid>', methods=['GET'])
 def yourfavmovie(userid):
     data = recommend_your_favorite_movie(userid)
    return jsonify(data), 200
@app.route('/otherfavmovie/<int:movieid>', methods=['GET'])
def otherfavmovie(movieid):
    data = recommend_other_favorite_movie(movieid)
    return jsonify(data), 200
if __name__ == "__main__":
    app.run(host='0.0.0.0', debug=True, port='8888')


三、部署上线并测试

将代码上传至宿主机的 /root/tensorflow 目录下,然后进入 docker 容器内,启动 flask 服务

root@bb09aa2a7097:/test/data# python movie_recommender.py 
  * Serving Flask app "movie_recommender" (lazy loading)
  * Environment: production
    WARNING: Do not use the development server in a production environment.
    Use a production WSGI server instead.
  * Debug mode: on
  * Running on http://0.0.0.0:8888/ (Press CTRL+C to quit)
  * Restarting with stat
  * Debugger is active!
 * Debugger PIN: 326-836-556


在浏览器中输入如下:

image.png

服务正常,后面再优化下部署方式,是不是就可以线上使用了呢。


四、Nginx 部署

这里使用 Nginx 来部署,因为服务器上还运行着其他的服务,所以就选用了 8880 端口来作为监听端口,最后的效果如下:

image.png

相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
相关文章
|
6月前
|
人工智能 并行计算 PyTorch
【PyTorch&TensorBoard实战】GPU与CPU的计算速度对比(附代码)
【PyTorch&TensorBoard实战】GPU与CPU的计算速度对比(附代码)
335 0
|
6月前
|
Linux 异构计算 Docker
实战 Google Colab,一起用 GPU
实战 Google Colab,一起用 GPU
305 0
|
6月前
|
机器学习/深度学习 异构计算 Python
Bert-vits2最终版Bert-vits2-2.3云端训练和推理(Colab免费GPU算力平台)
对于深度学习初学者来说,JupyterNoteBook的脚本运行形式显然更加友好,依托Python语言的跨平台特性,JupyterNoteBook既可以在本地线下环境运行,也可以在线上服务器上运行。GoogleColab作为免费GPU算力平台的执牛耳者,更是让JupyterNoteBook的脚本运行形式如虎添翼。 本次我们利用Bert-vits2的最终版Bert-vits2-v2.3和JupyterNoteBook的脚本来复刻生化危机6的人气角色艾达王(ada wong)。
Bert-vits2最终版Bert-vits2-2.3云端训练和推理(Colab免费GPU算力平台)
|
2月前
|
安全 中间件 PHP
Google Hacking高级实战-搜索特定口子-敏感信息
Google Hacking高级实战-搜索特定口子-敏感信息
|
3月前
|
机器学习/深度学习 数据采集 物联网
【机器学习】Google开源大模型Gemma2:原理、微调训练及推理部署实战
【机器学习】Google开源大模型Gemma2:原理、微调训练及推理部署实战
117 0
|
4月前
|
数据采集 开发者 Python
StaleElementReferenceException 不再是问题:Google Colab 上的 Selenium 技巧
在网页抓取中,Selenium面对动态页面时可能抛出`StaleElementReferenceException`。为解决这个问题,可以在Google Colab中使用显式等待、异常处理和代理IP。当元素变化时,通过WebDriverWait等待元素加载,捕获并重试`StaleElementReferenceException`异常。同时,利用亿牛云爬虫代理分散请求,防止频繁刷新导致异常。提供的Python代码示例展示了如何实现这一策略,从澎湃新闻网站抓取热点新闻。这种方法增强了爬虫的稳定性和效率。
StaleElementReferenceException 不再是问题:Google Colab 上的 Selenium 技巧
|
6月前
|
机器学习/深度学习 并行计算 PyTorch
【多GPU炼丹-绝对有用】PyTorch多GPU并行训练:深度解析与实战代码指南
本文介绍了PyTorch中利用多GPU进行深度学习的三种策略:数据并行、模型并行和两者结合。通过`DataParallel`实现数据拆分、模型不拆分,将数据批次在不同GPU上处理;数据不拆分、模型拆分则将模型组件分配到不同GPU,适用于复杂模型;数据和模型都拆分,适合大型模型,使用`DistributedDataParallel`结合`torch.distributed`进行分布式训练。代码示例展示了如何在实践中应用这些策略。
1765 2
【多GPU炼丹-绝对有用】PyTorch多GPU并行训练:深度解析与实战代码指南
|
6月前
|
API Go 网络架构
GEE Colab——如何从本地/Google云盘/Google Cloud Storage (GCS)上传和下载
GEE Colab——如何从本地/Google云盘/Google Cloud Storage (GCS)上传和下载
321 4
|
6月前
|
机器学习/深度学习 存储 人工智能
GEE Colab——初学者福音快速入门 Google Colab(Colaboratory)
GEE Colab——初学者福音快速入门 Google Colab(Colaboratory)
235 3
|
6月前
|
异构计算 Python
GPU服务器:使用Colab
GPU服务器:使用Colab
209 1