0基础小白在服务上跑Bert模型预训练测试

365 阅读3分钟

在服务器上跑Bert模型进行预训练测试

文档最后有简单的代码实例

1.创建云服务器开发环境

这里选择使用趋动云服务器来进行训练

1.1 创建环境

 1.1.1 点击快速创建

image.png

这里我们先不上传代码,代码一般比较大

image.png

 1.1.2 设置SSH密钥(远程连接)

image.png

下面是环境的代码路径具体位置

image.png

1.2 在miniconda中配置好环境

在远程连接工具,或者网页控制台上输入以下命令(上面的窗口中)

conda install transformers

miniconda的环境路径如下

image.png

1.3 得到远程连接的信息

窗口左侧有远程连接信息,点击复制

image.png

信息类似如下
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 将代码上传到服务器上

  1. 通过上面的远程连接信息连接服务器

image.png

  1. 将代码上传到对应的目录中

image.png [图片] 传输中

3.使用PyCharm远程连接云服务器

选择使用SSH连接

image.png

SSH连接信息---> 点这里

image.png

把环境和代码路径进行映射

image.png

检查是否映射完全,没有的话重新选择

image.png

可以选择自动更新,但是最好还是手动点一下上传代码

image.png

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博客

下载这些模型即可

image.png

最后的代码结构如下

image.png

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)

运行结果如下

image.png


预训练测试到这里就结束啦,感谢您的观看!希望对您有点帮助,对于第一次接触这些东西

笔者第一次尝试写文章,这个东西也是最近刚开始学,如若有误,欢迎指正交流,共同进步提高!

笔者只是将前辈们的文章进行整合,提取