日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

养成女友?我训练出了一个“杨超越”聊天机器人

發布時間:2023/12/2 综合教程 30 生活家
生活随笔 收集整理的這篇文章主要介紹了 养成女友?我训练出了一个“杨超越”聊天机器人 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

❤️點擊上方,選擇星標置頂,每天給你送上干貨❤️

作者 | 韋陽

出品 | 公眾號:算法碼上來(ID:GodNLP)

- BEGIN?-

在上一期教程中,我演示了如何從零開始訓練一個比較智障的聊天機器人。

從零開始訓練一個人工智障女友

但是當時數據量太少,模型簡單,完全沒法用,只能回復訓練集中出現過的句子。

而現在,完全體的聊天機器人終于誕生了,我把它命名為“楊超越”。這次可以隨你提問什么了,她都能對答如流!

首先來看看回復的效果怎么樣:

聊天開始!(按q退出)
我:很高興認識你
楊超越:我也很開心哦
我:我喜歡你
楊超越:我也喜歡你
我:做我女朋友好不好?
楊超越:哈哈,可以呢!
我:我會一直支持超越妹妹的!
楊超越:謝謝我們會一直努力的
我:我什么時候有女朋友?
楊超越:女朋友。。
我:我什么時候脫單?
楊超越:脫你妹啊!!
我:q
聊天結束!

可以看到超越妹妹的回復還是非常流暢的,那她究竟是怎么誕生的呢?

完整的項目我都放在了下面,歡迎大家點個star,支持一波:https://github.com/godweiyang/chatbot

介紹

這里我才用的是網上公開的小黃雞聊天語料,大概有100萬條左右,但是質量不是很高,都放在了data目錄下。

模型采用標準的Transformer-big模型,輸入你的提問句子,預測超越妹妹回復的句子,config目錄下是訓練和預測的配置文件。

模型訓練采用NeurST訓練庫,主要基于TensorFlow,也支持PyTorch訓練。模型快速推理采用LightSeq,可加速推理10倍以上,同時還能加速NeurST的訓練,最高加速3倍。兩者都是字節跳動AI Lab自研的,都已開源。

安裝環境

我們需要安裝三樣東西:

  • SentencePiece的命令行版本和python版本,用來對句子進行分詞。

  • NeurST深度學習訓練庫,用來訓練Transformer模型。

  • LightSeq,用來加速模型推理。

安裝命令都很簡單:

git?clone?https://github.com/google/sentencepiece.git?&?cd?sentencepiece
mkdir?build?&?cd?build
cmake?..
make?-j?$(nproc)
sudo?make?install
sudo?ldconfig?-vpip3?install?lightseq?neurst?sentencepiece

開始養成

生成詞表

首先我們需要從訓練語料庫中抽取出詞表,為了方便,直接用SentencePiece來分詞,生成大小為32k的詞表。

spm_train?--input=./data/train/train.src,./data/train/train.trg?\--model_prefix=./data/spm?\--vocab_size=32000?\--character_coverage=0.9995

這里需要指定訓練語料路徑--input、詞表保存的路徑前綴--model_prefix和詞表大小--vocab_size。運行結束后會在data目錄下生成spm.modelspm.vocab兩個詞表文件。一個是訓練好的分詞模型,一個是詞表。

不過我也上傳了生成好的TFRecord,大家也可以直接使用,跳過這一步。

「我上傳了生成好的詞表文件,大家可以直接使用,跳過這一步。」

生成TFRecord

為了加快TensorFlow的訓練速度,可以預先將訓練語料用上面的詞表處理成id,然后保存為TFRecord格式。這樣模型訓練時就可以直接讀取id進行訓練了,不需要做前面的分詞操作。能大大加快訓練速度,提升顯卡利用率。

python3?-m?neurst.cli.create_tfrecords?\--config_paths?configs/task_args.yml?\--dataset?ParallelTextDataset?\--src_file?./data/train/train.src?\--trg_file?./data/train/train.trg?\--processor_id?0?\--num_processors?1?\--num_output_shards?32?\--output_range_begin?0?\--output_range_end?32?\--output_template?./data/tfrecords/train.tfrecords-%5.5d-of-%5.5d

這里主要需要指定訓練集的路徑--src_file--trg_file,其它參數保持默認即可。生成完畢后會在data/tfrecords下面生成32個二進制文件,這就是處理好的訓練數據了。

「我上傳了生成好的TFRecord,大家可以直接使用,跳過這一步。」

模型訓練

有了詞表,有了處理好的訓練數據,接下來就是訓練模型了。這里開啟了XLA優化,使用Horovod分布式訓練,加快訓練速度。如果報錯,可以去掉最后兩行。

python3?-m?neurst.cli.run_exp?\--entry?trainer?\--task?translation?\--hparams_set?transformer_big?\--model_dir?./models/transformer_big?\--config_paths?./configs/task_args.yml,./configs/train_args.yml,./configs/valid_args.yml--distribution_strategy?horovod?\--enable_xla

這里需要指定的參數就是模型保存路徑model_dir,其他都保持默認。訓練好的模型會保存在models/transformer_big下,里面還細分為了bestbest_avg等文件夾,用來存最好的模型、模型的平均值等等。

我在8張V100 32G顯卡上訓練了8個小時左右,如果你們自己訓練的話還是比較耗時的。

「由于模型文件過大,之后我會找地方上傳我訓練好的模型文件,省去大家訓練的時間。」

模型預測

訓練好的模型會保存在models/transformer_big目錄下,然后我們就可以開始預測啦。

python3?-m?neurst.cli.run_exp?\--entry?predict?\--model_dir?./models/transformer_big?\--config_paths?./configs/predict_args.yml?\--output?output.txt

但是這時候還沒有交互功能,只能指定一個測試集文件,寫在了模型預測的配置文件里configs/predict_args.yml。還可以指定--output,將回復結果輸出到文件中。

「如果想直接體驗交互式的對話聊天,可以跳過這一步。」

模型導出為PB格式

如果直接用TensorFlow進行推理的話,速度非常慢,你就會感覺你和超越妹妹之間存在延時。所以可以將訓練得到的ckpt模型導出為PB格式,然后就可以用LightSeq訓練加速引擎進行快速推理了。

python3?export/export.py?\--model_dir?./models/transformer_big?\--output_file?./models/transformer_big/model.pb?\--beam_size?4?\--length_penalty?0.6

這里需要指定模型路徑--model_dir和導出PB文件的路徑--output_file,其它參數保持默認。最后會得到models/transformer_big/model.pb這個PB文件。

「由于模型文件過大,之后我會找地方上傳我導出好的PB模型文件,這樣大家就可以直接跳到最后一步了。」

開始交互式聊天!

有了PB模型文件,就可以和超越妹妹開始聊天啦!

python3?chat.py?\--spm_model?./data/spm.model?\--model_file?./models/transformer_big/model.pb

這里需要指定兩個路徑。一是最開始訓練好的分詞模型--spm_model,用來將你輸入的句子變成整數id。二是--model_file,也就是上一步中的PB格式模型文件。

聊天過程中隨時可以按q退出聊天,你每說一句話,超越妹妹就會回復你一句。

歡迎關注

這次用到的NeurST訓練庫和LightSeq加速庫都非常好用,從上面使用教程中也可以看出,幾乎不需要你寫什么代碼就能使用起來。

「聊天機器人:」
https://github.com/godweiyang/chatbot

「NeurST訓練庫:」
https://github.com/bytedance/neurst

「LightSeq加速庫:」
https://github.com/bytedance/lightseq

- END -

我是godweiyang,字節跳動AI Lab NLP算法工程師,華東師范大學計算機系本碩都是專業第一。秋招斬獲了上海三家互聯網大廠SSP offer,擅長算法機器翻譯模型加速。有任何問題都可以隨時咨詢我。

公眾號后臺回復【內推

我幫你內推字節,加我微信隨時查進度催進度咨詢問題

公眾號后臺回復【加群

可以進我的技術交流(聊天)群和內推群。

求求兄弟們點個在看吧,今天的閱讀量靠你們了????

總結

以上是生活随笔為你收集整理的养成女友?我训练出了一个“杨超越”聊天机器人的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。