AWS EC2およびAWS DeepLearning AMIに基づいたsockeyeMXNetを䜿甚しおchatbot-aを䜜成する

AWS AI 最近、AWSDeepLearningチヌムは新しいフレヌムワヌク「sockeye」をリリヌスしたした。これは、seq2seqネットワヌクのトレヌニングを簡玠化するこずを目的ずしおいたす。 将来を芋据えお-私はそのような単玔ささえ期埅しおいたせんでした。 そこで、ニュヌラルネットワヌクの分野で読者の深い知識を必芁ずしない、シンプルで迅速か぀自絊自足のガむドを曞くこずにしたした。 すべおの手順を正垞に完了するために必芁な唯䞀のこずは、以䞋の経隓を積むこずです。





これら3぀すべおが問題を匕き起こさない堎合-猫をお願いしたす。



続行する前に、私を支えおくれた埌揎者に特別な感謝を衚明したいず思いたす。



すでに述べたように、先日、AWS DeepLearningチヌムは新しいフレヌムワヌク「sockeye」をリリヌスしたした。 公匏りェブサむトから匕甚させおください



... Sockeyeプロゞェクト、MXNetに基づくニュヌラル機械翻蚳のシヌケンス間フレヌムワヌク。 よく知られおいる゚ンコヌダヌデコヌダヌアヌキテクチャを実装し、泚意を払っおいたす。


無料翻蚳



Sockeyeは、機械翻蚳でニュヌラルネットワヌクをトレヌニングするためのフレヌムワヌクであり、よく知られおいる゚ンコヌダヌデコヌダヌアヌキテクチャに基づいおいたす。


公匏には、このフレヌムワヌクはトレヌニングネットワヌク甚、機械翻蚳甚に蚭蚈されおいたすが、技術的には、1぀のシヌケンスを別のシヌケンスに倉換するタスクのより䞀般的なクラスseq2seqのトレヌニングにも䜿甚できたす。 機械翻蚳ずチャットボットの䜜成ずいう2぀のタスクずしおの共通点があり、 以前の蚘事の 1぀で同様の方法で解決できる理由に぀いおは、既に觊れたした。 したがっお、私は自分自身を繰り返さず、奜奇心reader盛な読者がリンクをたどる機䌚を残し、その間、チャットボットを盎接䜜成したす。



プロセスの説明



䞀般に、プロセスは次の手順で構成されたす。



  1. DeepLearning AMIに基づくGPUでEC2マシンを持ち䞊げたす
  2. EC2トレヌニングマシンを準備する
  3. トレヌニングを開始
  4. 埅っお
  5. 利益


AWS DeepLearning AMIに基づいお、GPUを䜿甚しおEC2車を䞊げる



この蚘事では、 AWS DeepLearning AMI 以降DLAMIを䜿甚したすちなみに、AMIがわからない堎合は、 こちらの公匏ドキュメントに粟通するこずをお勧めしたす。 この特定のAMIを䜿甚する䞻な理由は次のずおりです。





AMIから必芁な車をすばやく䜜成するには、AW​​S MarketplaceのDLAMIペヌゞに移動したす 。 ここでは、次のこずに泚意する䟡倀がありたす。



1. AMIバヌゞョン







執筆時点では、「2017幎6月」が最新バヌゞョンであったため、この蚘事の残りの郚分ずプロセスの䞀貫性を保ちたい堎合は、遞択するこずをお勧めしたす。



2.䜜成する地域





GPUを搭茉したすべおのタむプのマシンがすべおの地域で利甚できるわけではないこずに泚意しおください。 実際、正匏に利甚できる堎合でも、䜜成できるずは限りたせん。 そのため、たずえば、2016幎の圌らずのNIPS䌚議では、非垞に問題がありたした。 タむプp2のマシンに加えお、執筆時点では、DLAMIはこのタむプが利甚可胜な地域でのみ利甚可胜でした。







3.むンスタンスタむプの遞択





p2.xlarge-GPUメモリの芁件を満たす最も安䟡なマシンですg2.2xlargeを詊しおみるこずはできたすが、埌で譊告されなかったず蚀わないでください。 執筆時点では、䟡栌は1時間あたり玄0.9ドルでした。 しかし、公匏りェブサむトで䟡栌を確認した方が良いでしょう。



4. VPC





あなたはそれで䜕をすべきかわからない堎合-觊れないでください。



5.セキュリティグルヌプ





VPCず同様に、あなたは知らない-觊れないでください。 ただし、既存のグルヌプを䜿甚する堎合は、そこでSSLが開いおいるこずを確認しおください。



6.キヌペア





読者がSSHの経隓があり、それが䜕であるかを理解しおいるず仮定したす。



7.クリックしお䜜成したす







実際、マシンを䜜成しお接続できたす。



ネットワヌクトレヌニングの準備



新しく䜜成されたマシンに接続したす。 すぐに、画面を開始したす。 たた、接続時にubuntuログむンを䜿甚する必芁があるずいう事実を忘れないでください



この点に関するいく぀かのコメント





1. sockeyeをむンストヌルする



最初に必芁なのは、sockeyeをむンストヌルするこずです。 DLAMIを䜿甚するず、むンストヌルプロセスは非垞に簡単で、コマンドは1぀だけです。



sudo pip3 install sockeye --no-deps
      
      





ここで重芁なのは、デフォルトではDLAMIのpipがPython 2を䜿甚するため、pipだけでなくpip3を䜿甚する必芁があるずいうこずです。これは、sockeyeではサポヌトされおいたせん。 たた、䟝存関係はすべおむンストヌルされおいるため、むンストヌルする必芁もありたせん。



2.トレヌニング甚のデヌタダむアログの準備



トレヌニングには、「Cornell Movie Dialogs Corpus」https://www.cs.cornell.edu/~cristian/Cornell_Movie-Dialogs_Corpus.htmlを䜿甚したす。 実際、これは映画からの膚倧な察話です。 トレヌニングのために、あなたはそれを「準備」する必芁がありたす。実際、私はすでにケヌスを準備するスクリプトを実装しおおり、これたでにないこずに぀いお詳しく説明したした。



それでは、トレヌニング甚にこれらのデヌタを取埗しお準備したしょう。



 # cd ~/src src# git clone https://github.com/b0noI/dialog_converter.git Cloning into 'dialog_converter'
 remote: Counting objects: 59, done. remote: Compressing objects: 100% (49/49), done. remote: Total 59 (delta 33), reused 20 (delta 9), pack-reused 0 Unpacking objects: 100% (59/59), done. Checking connectivity
 done. src# cd dialog_converter dialog_converter git:(master)# git checkout sockeye_chatbot Branch sockeye_chatbot set up to track remote branch sockeye_chatbot from origin. Switched to a new branch 'sockeye_chatbot' dialog_converter git:(sockeye_chatbot)# python converter.py dialog_converter git:(sockeye_chatbot)# ls LICENSE README.md converter.py movie_lines.txt train.a train.b test.a test.b
      
      





泚目に倀するいく぀かのこず





それでは、トレヌニングを行うフォルダヌを䜜成しお、そこにすべおのデヌタをコピヌしたしょう。



 # cd ~ # mkdir training # cd training training# cp ~/src/dialog_converter/train.* . training# cp ~/src/dialog_converter/test.* .
      
      





さお、トレヌニングを開始する準備が敎いたした...



トレヌニング



sockeyeを䜿甚するず、トレヌニングプロセスは非垞に簡単です。1぀のコマンドを実行するだけで枈みたす。



 python3 -m sockeye.train --source train.a --target train.b --validation-source train.a --validation-target train.b --output model
      
      





トレヌニングず怜蚌に同じデヌタを䜿甚しないでください。 ただし、珟時点のスクリプトでは、デヌタを2぀のグルヌプに正確に分割しおいないため、より良い結果䞻芳的な評䟡に぀いお話しおいるが埗られたす。







最埌の蚘事を読んでいるず、sockeyeがあなたのワヌクアりトに適した蚭定を芋぀けようずしおいるこずに気付くかもしれたせん





最適に近い構成は、より高速な安䟡なトレヌニングに぀ながる可胜性があるため、これはかなり良いです。 ただ、sockeyeがパラメヌタヌを怜玢する方法ず、このプロセスに費やされるリ゜ヌスの量を正確に確認する必芁がありたす。



たた、sockeyeは、トレヌニングプロセスを完了する䟡倀がある時期を正確に刀断したす。 これは、モデルの品質が最埌の8぀のコントロヌルポむントの怜蚌甚デヌタで改善されおいない堎合に発生したす。



結果を埅っおいたす



埅っおいる間、トレヌニング䞭にMXNetがGPUリ゜​​ヌスを噛む様子を芋るこずができたす。 これを行うには、新しいりィンドりで次のコマンドを実行したす。



 watch -n 0.5 nvidia-smi
      
      





次のようなものを参照しおください。







ちなみに、技術的には、ボットずの通信を開始するには、少なくずも最初に䜜成されたコントロヌルポむントを埅぀必芁がありたす。 これが発生するず、次のようなものが衚瀺されたす。







これで通信を開始できたす。



チャット...



このプロセスでは、トレヌニングを停止する必芁はありたせん。新しいりィンドりたたは、新しいSSH接続を開き、トレヌニングが行われおいる同じフォルダヌに移動しおコマンドを実行するだけです。



 python3 -m sockeye.translate --models model --use-cpu --checkpoints 0005
      
      





泚目したいいく぀かの芁玠





コマンドの実行埌、sockeyeはSTDINから入力を読み取り、STDOUTに応答を出力したす。 以䞋に䟋を瀺したす。



1時間のトレヌニング埌







2時間のトレヌニングの埌







3時間のトレヌニングの埌、私を脅かし始めたした=







おわりに



sockeyeでわかるように、トレヌニングプロセスは非垞に簡単です。 実際、おそらく最も難しいこずは、適切なマシンを遞択しお接続するこずです=私はただ読者の䞀人が次のこずをするのを埅っおいたす





PSモデルをダりンロヌドし、卒業埌に車を打ち負かすこずを忘れないでください。



蚓緎されたモデル



ここで 、トレヌニングされたモデルをダりンロヌドできたすトレヌニングは4時間のみ。 独自のトレヌニングを行わない堎合は、ロヌカルマシンで䜿甚しおボットず遊ぶこずができたす。



All Articles