Rust言語で、事前学習した日本語版 GPTNeoを使ってみた。
GPTは機械学習による自然言語処理モデルで、人が書いたのと区別できないほどの文章を自動生成できると言われている。
Hugging FaceのTransformersに日本語で事前学習したJapanese Pre-trained GPTがいくつか挙がっている。
1年半ほど前にはPyTorchで使える日本語GPTモデルがほとんどなかったので、自前で作成して試してみたが、その頃とはだいぶ様子が変わってきた。
今回たまたま目についたのが、
rinna社のrinna/japanese-gpt-1bとイエローバック社のgpt-neo-japanese-1.3Bだが
GPT2/3と競うと謳い文句のGPTNeoをRustで試してみた。
GPTはPythonで使いことが多いと思うが、
Rustで使う場合は肝の部分は以下のように書ける。
うまくカプセル化すると、Pythonと余り変わらないくらいにシンプルになる。
これで、コンパイルされたバイナリコードが得られるのが有り難い。
let mut model = TextGenerationModel::new(generate_config)?;
model.set_device(Device::cuda_if_available());
let input_context_2 = "こんばんは、徳川家康です。\n";
let input_context_3 = "私は三流小説家と言われているのは知っているが、小説家に一流も二流も、三流もない、小説を書くだけだ。批評家は嫌いだ。女も嫌いだ。\n";
let output = model.generate(&[input_context_2, input_context_3], None);
for sentence in output {
println!("\n{}", sentence);
}
2種類の導入フレーズを使って文章を生成したが、cudaの効果か短時間で処理が完了する。
入力フレーズ1:こんばんは、徳川家康です。
入力フレーズ2:私は三流小説家と言われているのは知っているが、小説家に一流も二流も、三流もない、小説を書くだけだ。批評家は嫌いだ。女も嫌いだ。
入力フレーズは長いほうが、ヒントが多くなるようでより面白い文章を生成する。
こんなひねった入力には、キタキツネもAIも困るだろう。
自動生成された出力のサンプル例は以下のようになった。
こんばんは、徳川家康です。
さて今回は『BASARA』でおなじみのアバンティーズとコラボした話題沸騰中のカードゲーム、「信長の野望・大志」をご紹介したいと思います!この「織田信長の大乱!」では全国各地の名だたる武将たちが大軍で挑む合戦が数多く展開されていましたねぇ・・・まさに戦国絵巻って感じなんですが今回登場するのはなんとあの有名な武田信玄の息子、"信康"公。「 私は三流小説家と言われているのは知っているが、小説家に一流も二流も、三流もない、小説を書くだけだ。批評家は嫌いだ。女も嫌いだ。俺はどうしてこんなことがわかるのかね? 何が悲しいってそれは他の人間より頭がいいことよ! まあ確かに頭が悪いやつほど馬鹿らしいことは確かだがそれ以上に自分の才能を殺されてるということなんだろうけどな......なんかこういう奴に限っていつでも自分が正しいとかいう思考になってんだからさーもうほんとすまないわ... (_ _)人ゴメンナサイ!! あっ
私は三流小説家と言われているのは知っているが、小説家に一流も二流も、三流もない、小説を書くだけだ。批評家は嫌いだ。女も嫌いだ。小説家という職業の性格からいって、なんだか馬鹿げた話だ。高名な作家でも批評家にでもなれば、それは芸術だ。創作世界は一人で完結するものだ。それが作家の役割だ。われわれは人の社会的存在自体が芸術だと考えている。 小説は、ある程度お金がなければできない。よって現実と虚構の世界を区別して、お金がなければできないのだ。お金がなければ世界を演出することはできない。嘘で
AI恐るべしと言うべきか
コメント powered by CComment