Google Colab(或称为 "Colaboratory")是Google提供的一个免费的、基于浏览器的Python开发环境,它为深度学习研究提供了强大的计算支持。
在Colab中,python代码的执行是基于.ipynb文件,也就是Jupyter Notebook格式的python文件。这种笔记本文件与普通.py文件的区别是可以分块执行代码并立刻得到输出,同时也可以很方便地添加注释,这种互动式操作十分适合一些轻量的任务。
Google Colab的工作流程相对直观和简单。下面是一个常见的Colab工作流程的概述:
1. 访问 Colab打开浏览器,访问Google Colab的主页。
https://colab.research.google.com/
需要创建一个谷歌账户。Colab一般配合Google Drive使用。
可以选择新建一个笔记本、从Google Drive打开现有笔记本,或者从GitHub导入一个外部笔记本。
进入Colab的页面后点击新建笔记本。
使用这种方法新建的笔记本时,会在云端硬盘的根目录自动创建一个叫Colab Notebook的文件夹,新创建的笔记本就保存在这个文件夹中。
2. 选择运行时类型在笔记本页面的顶部菜单,点击“代码执行程序” > “更改运行时类型”。
选择你需要的硬件加速器类型(CPU、GPU或TPU)。
3. 编写和运行代码在单元中输入Python代码或者使用Markdown格式的文本。
使用快捷键或点击播放按钮运行代码单元。
Colab已经预装了大多数常见的深度学习库,比如PyTorch,tensorflow等等,如果有需要额外安装的库可以通过"!pip3 install <package>"命令来安装。
下面在笔记本中使用pip命令安装Python库或者依赖。
我们可以随时保存笔记本到Google Drive。可以生成共享链接,与其他人分享自己的笔记本。
Colab支持将笔记本下载为多种格式,如.ipynb、.py。
当完成工作后,可以选择断开连接或关闭浏览器标签来结束Colab会话。需要注意的是,每个会话的资源是临时的,当会话结束后,未保存到Google Drive的数据和结果都会丢失。
虽然Colab提供了免费的GPU和TPU资源,但这些资源是有使用限制的,例如每个会话的持续时间、总的计算时间等。长时间不活跃或使用资源过多可能会导致会话被中断。
4. 示例代码下面是一段使用预训练BERT模型和分词器(tokenizer)的简单示例代码:
# 在Colab中安装Transformers库
!pip install transformers
# 导入对应的库
from transformers import BertTokenizer
# 下载了BERT base版本的预训练分词器
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
# 对输入文本进行分词化 tokenization
text = "Using transformers is easy!"
tokenizer(text)
调用tokenizer(text)将返回一个字典,该字典通常包含input_ids(文本的token IDs)和attention_mask(用于标识实际token和填充token的掩码)。
输出内容:
{'input_ids': [101, 2478, 19081, 2003, 3733, 999, 102], 'token_type_ids': [0, 0, 0, 0, 0, 0, 0], 'attention_mask': [1, 1, 1, 1, 1, 1, 1]}
input_ids显示每个标记的标记ID,token_type_ids(有时也被称为“segment ids”)是一个与输入token序列长度相同的整数序列。
token_type_ids提供了一种机制,让模型知道输入中的不同句子或段落的界限。不过,需要注意的是,并不是所有的transformer模型都使用token_type_ids;例如,GPT-2就没有这个概念。
Hugging Face的transformers库为多种预训练模型提供了Tokenizers。Tokenization是将文本字符串转换为模型可以理解的形式(如ID序列)的过程。
# 下载模型
from transformers import BertModel
model = BertModel.from_pretrained("bert-base-uncased")
使用BertModel.from_pretrained("bert-base-uncased")下载了预训练的"bert-base-uncased"模型。这个模型是BERT的基础版本,是不区分大小写的英文模型。
# 将分词器的输出传递给BERT模型
encoded_input = tokenizer(text, return_tensors = "pt")
output = model(**encoded_input)
tokenizer(text, return_tensors = "pt")是将输入的文本text进行分词,并返回一个字典,其中包含模型需要的输入信息,如input_ids和attention_mask。参数return_tensors = "pt"表示返回的张量是PyTorch张量。
通过将分词器返回的字典encoded_input解包并传递给模型,执行了BERT模型的前向传播操作。
output变量现在包含了模型的输出,通常这会是每个输入token的隐藏状态。对于BERT base模型,每个token的隐藏状态的维度是768。
Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved