双十一刚过你的手还好吗?这些Colab技巧帮你愉快薅谷歌羊毛
ztj100 2024-11-08 15:06 36 浏览 0 评论
机器之心编辑部
这篇文章教你如何使用 Google Colab,更好地利用免费资源。
Google Colab 是一个免费的 Jupyter 环境,用户可以用它创建 Jupyter notebook,在浏览器中编写和执行 Python 代码,以及其他基于 Python 的第三方工具和机器学习框架,如 Pandas、PyTorch、Tensorflow、Keras、Monk、OpenCV 等。
Google Colab 的好处在于,不需要任何配置就能直接上手使用,并提供免费的 GPU,你可以和任何人共享实时代码、数学公式、数据可视化结果、数据处理、数值模拟、机器学习模型等各种项目。
以前,机器之心也曾经介绍过很多关于 Colab 的知识点,比如这些:
本文将介绍如何用 Python 使用 Google Colab,以及一些 Colab 使用技巧。
项目地址:https://github.com/towardsai/tutorials/tree/master/google_colab_tutorial
为什么大家都爱 Colab
Colab 的优点包括:
提供了免费的 Jupyter notebook 环境;
带有预安装的软件包;
完全托管在谷歌云上;
用户无需在服务器或工作站上进行设置;
Notebook 会自动保存在用户的 Google Drive 中;
提供基于浏览器的 Jupyter notebook;
完全免费,且提供 GPU 和 TPU(Pro 用户可以使用更多资源,但需要付费);
支持 Python 2 和 Python 3;
提供两种硬件加速器:GPU 和 TPU。
第一步:启动 Google Colab
我们可以使用 Colab 在 Web 浏览器上直接运行 Python 代码,使用指南:https://mktg.best/d7b6u。
启动窗口随之打开,弹窗中提供了多项功能:
它提供了创建 notebook 以及从不同来源上传和选择的选项,比如 GitHub、Google Drive 或本地计算机。
从 GitHub 上传 Notebook
我们可以使用项目 URL,或者搜索组织和用户等方法,直接从 GitHub 上传 Python 代码。
使用 URL 的步骤上传项目的步骤如下图所示:
启动 Google Colab
从弹框中选择 GitHub 这一项。
输入 GitHub 项目 URL 并搜索以获取代码
将完整代码一键上传到 Google Colab notebook
同样地,用户可以通过按名称、日期、所有者或者修改日期过滤保存的 notebook,直接从 Google Drive 上传代码。
从 Kaggle 上传数据
从 Kaggle 生成 API Token
来自 Kaggle 的数据可以直接上传到 Colab,不过这需要 Kaggle 的 API Token 才能完成数据导入,步骤如下:
打开 Kaggle
转至「我的账户」
向下滚动到「API」部分
如果需要,先单击「Expire API Token」以删除先前的 token
点击「Create New API Token」,生成一个新的 token 并下载一个名为「kaggle.json」的 JSON 文件
「kaggle.json」文件包含用户名和密钥,如下所示:
从 Kaggle 上传数据的步骤
将「kaggle.json」文件保存在本地计算机上。
安装 Kaggle 软件包:
!pip install -q kaggle
导入包:
from google.colab import files
上传本地文件「kaggle.json」:
files.upload()
检查 Colab notebook 是否与 Kaggle 正确连接:
!kaggle datasets list
从 Kaggle 下载任意比赛数据:
!kaggle competitions download -c competitive-data-science-predict-future-sales
Kaggle 数据将在 Colab 中下载和上传,如下所示:
从 Google Drive 中读取文件
Colab 还提供从 Google Drive 读取数据的功能。
导入包
import globimport pandas as pdfrom google.colab import drive
挂载 Google Drive
drive.mount('/gdrive')
这一步要求填写 Google Drive 的授权码:
授权码输入框
单击链接并生成授权码
从 Google Drive 读取 CSV 文件
file_path = glob.glob("/gdrive/My Drive/***.csv")for file in file_path: df = pd.read_csv(file) print(df)
将运行时硬件加速器设置为 GPU
Google Colab 提供免费的 GPU 硬件加速器云服务。在机器学习和深度学习中需要同时处理多个计算,高性能 GPU 的价格很高,但非常重要。
GPU 通过并行化提供优秀的性能,可在一次调用中启动数百万个线程。尽管与 CPU 相比,GPU 的 clock speed 较低,且缺少多核管理功能,但 GPU 的表现通常比 CPU 好。
在 Colab 中设置 GPU 硬件加速器
设置步骤如下:
选择 Runtime → Change runtime type
在弹出窗口中选择「GPU」
检查 Colab 中 GPU 的详细信息
导入重要的包
import tensorflow as tffrom tensorflow.python.client import device_lib
检查 GPU 加速器
tf.test.gpu_device_name()
检查用于 GPU 的硬件
device_lib.list_local_devices()
使用 GPU 的代码示例
在未选择运行时 GPU 的情况下检查可用 GPU 的数量,使其设置为「None」。
import tensorflow as tfno_of_gpu = len(tf.config.experimental.list_physical_devices('GPU'))print("Total GPUS:", no_of_gpu)
硬件加速器为 None,因此 GPU 数量的值为 0。
将运行时硬件加速器设置为 GPU:
import tensorflow as tfno_of_gpu =len(tf.config.experimental.list_physical_devices('GPU'))print("Total GPUS:", no_of_gpu)
硬件加速器为 GPU,因此 GPU 数量值为 1。
在 GPU 上执行张量乘法:
try: with tf.device('/device:GPU:1'): tensor1 = tf.constant([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]]) tensor2 = tf.constant([[1.0, 2.0], [3.0, 4.0], [5.0, 6.0]]) result = tf.matmul(tensor1, tensor2) print(result)except RuntimeError as exception: print(exception)
张量乘法结果。
将 GitHub repo 复制到 Google Drive
GitHub repo 代码可以复制和存储到 Google Drive 中,具体步骤如下:
挂载 Google Drive
from google.colab import drivedrive.mount('/content/gdrive')
进入 Google drive,创建目录「project」。
%cd gdrive/My Drive/mkdir project%cd project/
复制 GitHub repo,例如:
!git clone https://github.com/saniyaparveez/youtube_video_type_prediction.git
检查复制的项目
!ls
Colab 魔法
Colab 提供许多有趣的 trick,包括多个可以执行快速操作的命令,这些命令通常使用 % 作为前缀。
Colab 魔法命令列表
%lsmagic
本地目录
%ldir
获取 Notebook 历史
%history
CPU 时间
%time
系统运行多久?
!uptime
展示可用和已用的内存
!free -hprint("-"*100)
展示 CPU 产品规格
!lscpuprint("-"*70)
列出所有运行虚拟机进程
%%shecho "List all running VM processes."ps -efecho "Done"
在 HTML 中嵌入文本
%%html<marquee>Towards AI is a great publication platform</marquee>
设计 HTML 格式
#@title Personal Details#@markdown Information.Name = 'Peter' #@param {type: "string"}Age = 25 #@param {type: "slider", min: 1, max: 100}zip = 1234 #@param {type: "number"}Date = '2020-01-26' #@param {type: "date"}Gender = "Male" #@param ['Male', 'Female', 'Other']#@markdown ---print("Submitting the form")print(string_type, slider_value, number, date, pick_me)print("Submitted")
在 Google Colab 中生成 HTML 格式。
单元格执行输出
绘图
Google Colab 还可用于数据可视化。以下代码和图展示了 Google Colab 对一个以上多项式的绘图,Y = X3+X2+X。
x = np.arange(-10,10)y = np.power(x,3)y1 = np.power(x,3) + np.power(x,2) + xplt.scatter(x,y1,c="red")plt.scatter(x,y)
以下代码和图用于生成热图:
import matplotlib.pyplot as pltimport numpy as npimport seaborn as snslength = 10data = 5 + np.random.randn(length, length)data += np.arange(length)data += np.reshape(np.arange(length), (length, 1))sns.heatmap(data)plt.show()
Google Colab 中的 TPU
Google Colab 使用 TPU(张量处理单元)进行 Tensorflow 图上的加速。TPU 是谷歌开发的、专为神经网络机器设计的 AI 加速器专用集成电路 (ASIC)。
TPU 具备优秀的 teraflop 配置、浮点运算性能等。每个 TPU 的计算能力达到每秒 180 万亿次浮点运算(180 teraflops),拥有 64 GB 的高带宽内存。
在 Colab 中设置 TPU
在 Google Colab 中设置 TPU 的步骤如下:
运行时菜单 → 更改运行时
选择 TPU 硬件加速器
确认在 TPU 硬件加速器上运行
这需要 TensorFlow 包。以下代码和实现可以确认 Colab 是否设置 TPU 加速器:
import tensorflow as tftry: tpu = tf.distribute.cluster_resolver.TPUClusterResolver() print('Running on TPU', tpu.cluster_spec().as_dict()['worker'])except ValueError: print('Exception')
如果 TPU 未设置成功,则代码会报错。
结论
Google Colab 是一种 Jupyter notebook 环境,通过执行基于 Python 的代码来构建机器学习或深度学习模型。Google Colab 完全免费(pro 版除外),并提供 GPU 和 TPU 硬件加速器,易于使用和共享。
本文列举了 Google Colab 的使用技巧,希望能够帮助大家更好地利用 Google Colab 资源。
资源
Google colab 实现:https://colab.research.google.com/drive/1ymIYzFg4Q7iBjnTut31aBqPHgOpkjHYD?usp=sharing
Github repository:https://github.com/towardsai/tutorials/tree/master/google_colab_tutorial
参考文献
[1] Google Colab, https://colab.research.google.com/
[2] Python 2 Deprecation, Google Colab, Google, https://research.google.com/colaboratory/faq.html#python-2-deprecation
[3] Machine Learning Algorithms for Beginners with Code Examples in Python, Pratik Shukla, Roberto Iriondo, Towards AI, https://towardsai.net/p/machine-learning/machine-learning-algorithms-for-beginners-with-python-code-examples-ml-19c6afd60daa
[4] Project Jupyter, https://jupyter.org/
[5] Google Colab, FAQ, https://research.google.com/colaboratory/faq.html
相关推荐
- sharding-jdbc实现`分库分表`与`读写分离`
-
一、前言本文将基于以下环境整合...
- 三分钟了解mysql中主键、外键、非空、唯一、默认约束是什么
-
在数据库中,数据表是数据库中最重要、最基本的操作对象,是数据存储的基本单位。数据表被定义为列的集合,数据在表中是按照行和列的格式来存储的。每一行代表一条唯一的记录,每一列代表记录中的一个域。...
- MySQL8行级锁_mysql如何加行级锁
-
MySQL8行级锁版本:8.0.34基本概念...
- mysql使用小技巧_mysql使用入门
-
1、MySQL中有许多很实用的函数,好好利用它们可以省去很多时间:group_concat()将取到的值用逗号连接,可以这么用:selectgroup_concat(distinctid)fr...
- MySQL/MariaDB中如何支持全部的Unicode?
-
永远不要在MySQL中使用utf8,并且始终使用utf8mb4。utf8mb4介绍MySQL/MariaDB中,utf8字符集并不是对Unicode的真正实现,即不是真正的UTF-8编码,因...
- 聊聊 MySQL Server 可执行注释,你懂了吗?
-
前言MySQLServer当前支持如下3种注释风格:...
- MySQL系列-源码编译安装(v5.7.34)
-
一、系统环境要求...
- MySQL的锁就锁住我啦!与腾讯大佬的技术交谈,是我小看它了
-
对酒当歌,人生几何!朝朝暮暮,唯有己脱。苦苦寻觅找工作之间,殊不知今日之事乃我心之痛,难道是我不配拥有工作嘛。自面试后他所谓的等待都过去一段时日,可惜在下京东上的小金库都要见低啦。每每想到不由心中一...
- MySQL字符问题_mysql中字符串的位置
-
中文写入乱码问题:我输入的中文编码是urf8的,建的库是urf8的,但是插入mysql总是乱码,一堆"???????????????????????"我用的是ibatis,终于找到原因了,我是这么解决...
- 深圳尚学堂:mysql基本sql语句大全(三)
-
数据开发-经典1.按姓氏笔画排序:Select*FromTableNameOrderByCustomerNameCollateChinese_PRC_Stroke_ci_as//从少...
- MySQL进行行级锁的?一会next-key锁,一会间隙锁,一会记录锁?
-
大家好,是不是很多人都对MySQL加行级锁的规则搞的迷迷糊糊,一会是next-key锁,一会是间隙锁,一会又是记录锁。坦白说,确实还挺复杂的,但是好在我找点了点规律,也知道如何如何用命令分析加...
- 一文讲清怎么利用Python Django实现Excel数据表的导入导出功能
-
摘要:Python作为一门简单易学且功能强大的编程语言,广受程序员、数据分析师和AI工程师的青睐。本文系统讲解了如何使用Python的Django框架结合openpyxl库实现Excel...
- 用DataX实现两个MySQL实例间的数据同步
-
DataXDataX使用Java实现。如果可以实现数据库实例之间准实时的...
- MySQL数据库知识_mysql数据库基础知识
-
MySQL是一种关系型数据库管理系统;那废话不多说,直接上自己以前学习整理文档:查看数据库命令:(1).查看存储过程状态:showprocedurestatus;(2).显示系统变量:show...
- 如何为MySQL中的JSON字段设置索引
-
背景MySQL在2015年中发布的5.7.8版本中首次引入了JSON数据类型。自此,它成了一种逃离严格列定义的方式,可以存储各种形状和大小的JSON文档,例如审计日志、配置信息、第三方数据包、用户自定...
你 发表评论:
欢迎- 一周热门
-
-
MySQL中这14个小玩意,让人眼前一亮!
-
旗舰机新标杆 OPPO Find X2系列正式发布 售价5499元起
-
【VueTorrent】一款吊炸天的qBittorrent主题,人人都可用
-
面试官:使用int类型做加减操作,是线程安全吗
-
C++编程知识:ToString()字符串转换你用正确了吗?
-
【Spring Boot】WebSocket 的 6 种集成方式
-
PyTorch 深度学习实战(26):多目标强化学习Multi-Objective RL
-
pytorch中的 scatter_()函数使用和详解
-
与 Java 17 相比,Java 21 究竟有多快?
-
基于TensorRT_LLM的大模型推理加速与OpenAI兼容服务优化
-
- 最近发表
- 标签列表
-
- idea eval reset (50)
- vue dispatch (70)
- update canceled (42)
- order by asc (53)
- spring gateway (67)
- 简单代码编程 贪吃蛇 (40)
- transforms.resize (33)
- redisson trylock (35)
- 卸载node (35)
- np.reshape (33)
- torch.arange (34)
- npm 源 (35)
- vue3 deep (35)
- win10 ssh (35)
- vue foreach (34)
- idea设置编码为utf8 (35)
- vue 数组添加元素 (34)
- std find (34)
- tablefield注解用途 (35)
- python str转json (34)
- java websocket客户端 (34)
- tensor.view (34)
- java jackson (34)
- vmware17pro最新密钥 (34)
- mysql单表最大数据量 (35)