在服务器上跑Bert模型进行预训练测试
文档最后有简单的代码实例
1.创建云服务器开发环境
这里选择使用趋动云服务器来进行训练
1.1 创建环境
1.1.1 点击快速创建
这里我们先不上传代码,代码一般比较大
1.1.2 设置SSH密钥(远程连接)
下面是环境的代码路径具体位置
1.2 在miniconda中配置好环境
在远程连接工具,或者网页控制台上输入以下命令(上面的窗口中)
conda install transformers
miniconda的环境路径如下
1.3 得到远程连接的信息
窗口左侧有远程连接信息,点击复制
信息类似如下
ssh -p 30022 用户名@root@ssh-9f69833b323**********5dcdaaa37f3.default@direct.virtaicloud.com
Host: direct.virtaicloud.com
Username: 用户名@root@ssh-9f69833b323**********5dcdaaa37f3.default
port: 30022
2.使用远程工具连接云服务器上传代码
2.1 下载远程连接工具xftp
内含Xshell6.0和Xftp6.0,解压安装即可
链接: pan.baidu.com/s/1RPrBrRU9…
提取码: y78a
2.2 将代码上传到服务器上
- 通过上面的远程连接信息连接服务器
- 将代码上传到对应的目录中
[图片] 传输中
3.使用PyCharm远程连接云服务器
选择使用SSH连接
SSH连接信息---> 点这里
把环境和代码路径进行映射
检查是否映射完全,没有的话重新选择
可以选择自动更新,但是最好还是手动点一下上传代码
4.运行代码
运行代码有很多种方式,使用脚本,Jupyter,或者其他途径,这里就使用最简单的命令来进行运行演示
运行的指令如下:
/root/miniconda3/bin/python /genimi/code/你的代码包/要跑的文件的.py
这里我使用的是
/root/miniconda3/bin/python /genimi/code/bert-base-uncase/bert.py
5.代码示例如下
下载模型,具体可以看----->如何下载和在本地使用Bert预训练模型_bert-base-uncased 本地-CSDN博客
下载这些模型即可
最后的代码结构如下
from transformers import BertModel, BertTokenizer
import torch
# 把对应的模型下载放到本地目录中
path = '../bert-base-uncase'
# 加载预训练模型
model = BertModel.from_pretrained(path)
# 下载并加载预训练的模型
tokenizer = BertTokenizer.from_pretrained(path)
sentence = 'I love Paris'
tokens = tokenizer.tokenize(sentence)
print(sentence)
tokens = ['[CLS]'] + tokens + ['[SEP]']
print(tokens)
# 这里只用粗暴的方法将文本补齐
count = 10 - len(tokens)
if len(tokens) < 10:
for i in range(count):
tokens.append('[PAD]')
print(tokens)
attention_mask = [1 if i != '[PAD]' else 0 for i in tokens]
print(attention_mask)
tokens_ids = tokenizer.convert_tokens_to_ids(tokens) # 将每个token转换提取索引
print(f'获取token索引 + {tokens_ids}')
# 将token_ids 和 attention_mask转换成张量
token_ids = torch.tensor(tokens_ids).unsqueeze(0)
attention_mask = torch.tensor(attention_mask).unsqueeze(0)
print('\n转换后:')
print(token_ids)
print(token_ids.shape)
print(attention_mask)
print(attention_mask.shape)
print()
# 获得嵌入向量
vto_embedding = model(token_ids, attention_mask=attention_mask)
last_hidden_state = vto_embedding[0]
print(last_hidden_state)
运行结果如下
预训练测试到这里就结束啦,感谢您的观看!希望对您有点帮助,对于第一次接触这些东西
笔者第一次尝试写文章,这个东西也是最近刚开始学,如若有误,欢迎指正交流,共同进步提高!
笔者只是将前辈们的文章进行整合,提取