致"七夕"--用 AI “炒个冷饭,写个情诗”
不知不觉又到一年“七夕”,也就意味着“中秋”也近了。我不是个懂浪漫的人,也不必去精心挑选礼物,珍惜眼前茶米油盐平平淡淡地生活,似乎所谓的“东方情人节”,也和我没太大的关系。如果硬是要发生点关系,那便是我要在“七夕”炒个冷饭,回顾一下华为开源自研 AI 框架 MindSpore 在自然语言方面其中的一个案例 -- 《使用 BERT 网络实现智能写诗》,感受一下 MindSpore 版本的变化(PS:其实主要是挽救一下快过期的代金券)。
环境及源码说明
基于华为云 ModelArts 新版 Notebook,tensorflow1.15-mindspore1.2.0-cann20.2-euler2.8-aarch64
实例,昇腾910(32GB显存)单卡规格,配搭ARM处理器,适合深度学习场景下的模型训练和调测。
案例出处 MindSpore 官方文档
源代码出处: MindSpore Docs 数据集来源: poetry.txt 预训练模型来源:bert_base_v1.0_cn_wiki 数据集托管在 AIGallery: bert_poetry
环境准备
温馨提示:本次实践使用 Ascend 资源,按需使用时单卡费用约 19.50/小时,建议先认证开发者加入沃土计划领取代金券
请参照ModelArts准备工作完成账号注册、环境开通等。
下载资源到 OBS。理论上 AIGallery 支持数据集、Notebook、模型等资源的托管和分享,为了方便学习交流,我将此次实践的资源以数据集的方式上传分发,大家可自行下载到 OBS。接着我们就能在 ModelArts 开发环境 Notebook 通过 Moxing 框架使用 OBS 中的资源。
比如我的脚本如下:
# 资源下载
import moxing as mox
mox.file.copy_parallel('obs://huqi88/AIGallery/bert_poetry/bert_poetry','bert_poetry')
print('Done!')
下载完成之后就能看到bert_poetry
目录。
打开bert_poetry/bert_poetry.ipynb
,选择MindSpore-python3.7-aarch64
内核运行,即可体验 AI 写诗。
开始用 AI 写诗
我们执行!pip list
可以查看当前环境安装的 python 依赖,也能够确认我们使用的是 MindSpore 1.2 的版本:
当然, MindSpore 1.3 中新增的run_check
方法查看版本信息在当前的 Notebook 中是无法使用的,我也尝试在 Notebook 中安装新版本的 MindSpore,不过在执行run_check
方法时提示某些.so
文件找不到,多次尝试解决无果后就放弃了体验新版本。
尽管没能在 Notebook 中体验到最新的 MindSpore,但我还是感受到了 MindSpore 版本更新带来的变化,比如在 1.2 版本之前使用的GatherV2
和 TensorAdd
修改为了更加规范的Gather
和Add
,LearningRateSchedule
改为从mindspore.nn.learning_rate_schedule
中导入,而这些都可以在查看版本列表和接口变更中追溯到。
我已经将基于bert-base
预训练模型训练了 20 个 epoch
的模型一并上传,因此我们可以直接推理:
# 推理
!python poetry.py --train=False --ckpt_path=./poetry-20_1535.ckpt
在poetry.py
写入了默认的文字七夕快乐,因此能够直接得到推理结果:
**********************************
续写 【七夕快乐】:
七夕快乐早朝还,
梦魂犹在锦城间。
不知系马东归去,
还有溪头江水闲。
cost time: 31348.7 ms
**********************************
藏头诗 【七夕快乐】:
七夕今朝泪如雨,
夕风相送各东西。
快游不是归春至,
乐府何人肯忆家。
cost time: 162.8 ms
也可以通过input
参数出入,比如有情人终成眷属:
**********************************
续写 【有情人终成眷属】:
有情人终成眷属,
放下不关身老身。
唯说一生长似我,
一壶芳兴属何人。
cost time: 31014.1 ms
**********************************
藏头诗 【有情人终成眷属】:
有鸟随鸟下,
情人见我稀。
人生一世间,
终日我心知。
成事何由尽,
眷言几万重。
属官如有问,
cost time: 235.8 ms
如果您对结果不满意,也可以自行修改配置文件\src\finetune_config.py
再继续训练:
!python poetry.py
不使用资源时记得删除实例!!!
鹏程·盘古α 大模型
如果您不想动手实践,那就直接享用业界首个2000亿参数以中文为核心的预训练生成语言模型 -- 鹏程·盘古α,这是真金白银打造的模型,基于“鹏城云脑Ⅱ”和国产MindSpore框架的自动混合并行模式实现在2048卡算力集群上的大规模分布式训练, 这个2048卡训练一个小时得花多少米?此外鹏程·盘古α模型基于国产全栈式软硬件协同生态(MindSpore+CANN+昇腾910+ModelArts),满满的“中国心”啊!那如果用鹏程·盘古α模型,会有怎样的表现呢?
体验地址:https://pangu-alpha.openi.org.cn/
Copy 攻城狮带您见证一下哈!
输入:不知不觉又到一年七夕,
盘古α续写:又到一年虐狗日,送上一首歌,送给所有还在单身的妹子,《单身情歌》
输入:七夕情人节到了,祝大家
盘古α续写:节日快乐,有情人终成眷属!一起对TA说出那句浪漫的话吧!
难得的节日,错过了也没什么,何必纠结呢!
我没有修改可选参数 topK 和 topP ,分别尝试了专业文档撰写和自由生成,不知道是不是因为训练集中的表情文字没有剔除,有时候生成的文字会有些难以理解的结果比如“大粽子,大粽子”,目前来看还不是太理想,不过对结果简单挑选之后,还是有满意的。(如果图片侵权,请联系作者删除,感谢!wechat:Hugi66)
尾声
人生路,走着走着就迷失了方向,珍惜眼前人,珍惜每一天。今天是七夕,祝有情人终成眷属!当然,如果您对 AI 感兴趣却不知道怎么上手,欢迎加入华为云AI实战营,和华为员工一起学 AI,也许还能找到志同道合的 TA!
👉👉👉 https://marketplace.huaweicloud.com/markets/ai/gallery_full_stack.html