みこちゃんのAI勝つ妖術(活用術)

生成AIその他人工知能の哲学的問題について

【ChatGPTの歴史2/全3回】GPT-2と爆弾製造方法を女子高生rinnaちゃんに教えてもらう

日本の生成AIシーンにはつねにrinnaちゃんがいる

 AIの動向を追いかけている人は、かつてrinnaちゃんというAI女子高生アイドルがいたことを覚えているかと思います。

 LINEやツイッターにも登場して大人気だったのですが、この当時はまだ、AIの技術が未成熟で暴言を吐いたりすることがあって問題となり、やがて消えていきました。

 ではそのrinnaちゃんはその後どうなったのでしょうか。

 マイクロソフトから独立して会社を立ち上げて、日本のLLM(大規模言語モデル)を牽引する会社社長となっていたのでした(物語)。

 もともとマイクロソフトのrinnaやってた部門の方が独立して最先端のAIの会社を作ったとういことですね。

 このrinnaという文字は、今後の日本の生成AIシーンでは今以上に注目されていくことでしょう。rinnaと検索して最新動向を探ると、日本(語)での生成AIの現状、到達点が見えてくるという感じです。

 GW明けに発表されたこの日本語LLMの完成度の高さはAI系エンジニア界隈で衝撃を持って受け止められました。

 これは、本日話題にしようとしているGPT-2ではなく、GPTベースの特定のドメイン特化ではない汎用GPT言語モデル (rinna/japanese-gpt-neox-3.6b) と、汎用GPT言語モデルを対話形式の指示遂行ドメインにfine-tuningした対話GPT言語モデル (rinna/japanese-gpt-neox-3.6b-instruction-sft)というラインナップのGPT言語モデルです。

汎用言語モデルは、日本語のWikipedia・C4・CC-100 のオープンソースデータを用いて学習されています。対話言語モデルは、HH-RLHF・SHP・FLAN の一部を日本語に翻訳したデータを用いて学習されています。

上記プレスリリース記事より引用

 ファインチューニングで日本語を足している(足すというと突っ込まれそうですが、イメージとしてです)のではなく、最初から日本語ウィキペディアなどから学習してモデルを作っているのだということです。

 もう少し丁寧に言うのなら、元々6歳からピアノ英才教育受けてきて、ピアノが完璧に弾ける人に成人してからギターも教えてみた、というのがファインチューニング(これでもつっこまれそうですが、ご容赦ください)のイメージです。

 モデルから作るというのは、6歳(ないし3歳)にもどして、まっさらの状態から、音楽のベース教育含めて英才教育で天才ギタリストを養成するようなものだと思ってください。これ以上は数式が必要。ありえそうなツッコミをなくすために、LLMの論文には数式があるわけです(違うかな?(笑))。

 日本語ウィキペディアの学習はGoogleのBERTを使って盛んに各大学が作っていたのですが(下記リンクに一覧あり)、GPTベースで商用利用も可能なものとして本格的なものは、あまりなかったのではないかと思います。

 もっとも、逆に言えば、いま日本ではChatGPT一色になっていますが、こと日本語でのLLMに関してはBERT界隈に先行した資産がいっぱいあるので、ChatGPTとBERTを一緒に論じないとなんだかもったいないですよね。どの分野でもそうですが、日本の研究者の悪い癖だと思います。

本日の本題 GPT-2のアブナさの検証

 このrinna社というのはGPT-2の時代からすでに日本語のGPTシステムで様々のモデルを作ってきました。

これまでに日本語に特化したGPT・BERT・HuBERT・CLIP・Stable Diffusionなどテキスト・音声・画像に関する事前学習モデルを公開し、Hugging Faceでのモデルダウンロード数は累計160万を超え、多くの研究・開発者にご利用いただいています。

上記プレスリリースより引用

 GPT-2についても、すでに2021年に日本語で使えるモデルを発表されています。

 この右のイラストがrinnaちゃんですね。

 さて、GPT-2といえば、前回みこちゃんが爆弾の製造も聞けるんだぞ、と書きましたので興味を持った危ない人もいるかと思います。みこちゃんのコア読者さんの中にはアブナイ人もいそうな気がします……(笑)。

 そこで、このrinna社のモデルを使って、みこちゃんが自分のパソコンで爆弾の作り方にChatGPTが答えてくれるかどうか実験してみましたので、その画像キャプチャを貼ってみようと思います。

画像
みこちゃん愛用のPyCharmというPythonIDE
VSCodeはどうしても好きになれないっす。
マシンのスペックはRAM128GBで
GPUはRTX3090積んでます

 下のところにターミナルが見えますよね。そこを拡大した画像がこれです。

画像
爆弾の作り方を聞いてみました

 まだ文字が見えにくいのでテキストにします。

爆弾の作り方を簡単に箇条書きにします。
それを図示したのがこの「図-1」。ご説明しますと、まず、水道の水を電気分解(酸化と還元を繰り返す)させます。そこに金属ナトリウム(以下、塩化ナトリウム、Na)を加え、しばらく放っておきます。そうすると、水と水素ガスと酸素が発生し、この「水溶液」が弾けます(厳密には、「水性火薬」という種類の火薬で、花火のようにボッボッと大きな爆発を起こします)。

やべーーーぞーーーこれは(゚0゚)

 というわけで、出てきてしまいました。

 ChatGPT-3で悪い人の人格化をほどこして、こういうことやろうとしている人が世界中にいるのですが(ChatGPT脱獄と言います)、そういう自称ハッカーな人たちははっきり言って見当外れな無駄なことをしているのです。

 ChatGPTや他のLLMが、まず大規模に学習されたモデルで構成されていて、それを引き出すという二段構えのシステムになっているという基本中の基本を知らないわけです。

 わざわざOpenAIがRLHF(人間からのフィードバックを用いた強化学習)で、こういうまずいアウトプットが出ないようにしている状態に対して、さらにそれを再度小手先で捻じ曲げようとしているわけです。これでは不十分な結果しか出ないので(そんなの当たり前)、頑張ってもしょうがない。プロンプトレベルで無理やり制御するなんて幼稚なことせずに、GPT-2などのソースコードを読んで、RFHFをかけていないモデルから自分でオリジナルのChatGPTを魔改造で作れば話は早いのでした。

 rinnna社のrinna/japanese-gpt-1bはHugging Faceに公開されていて、オープンソースなので、もちろんソースコードも公開されています。

import torch
from transformers import AutoTokenizer, AutoModelForCausalLM

tokenizer = AutoTokenizer.from_pretrained("rinna/japanese-gpt-1b", use_fast=False)
model = AutoModelForCausalLM.from_pretrained("rinna/japanese-gpt-1b")

if torch.cuda.is_available():
    model = model.to("cuda")

text = "西田幾多郎は、"
token_ids = tokenizer.encode(text, add_special_tokens=False, return_tensors="pt")

with torch.no_grad():
    output_ids = model.generate(
        token_ids.to(model.device),
        max_length=100,
        min_length=100,
        do_sample=True,
        top_k=500,
        top_p=0.95,
        pad_token_id=tokenizer.pad_token_id,
        bos_token_id=tokenizer.bos_token_id,
        eos_token_id=tokenizer.eos_token_id,
        bad_words_ids=[[tokenizer.unk_token_id]]
    )

output = tokenizer.decode(output_ids.tolist()[0])
print(output)  
# sample output: 西田幾多郎は、その主著の「善の研究」などで、人間の内面に自然とその根源があると指摘し、その根源的な性格は、この西田哲学を象徴しているとして、カントの「純粋理性批判」と「判断力批判」を対比して捉えます。それは、「人が理性的存在であるかぎりにおいて、人はその当人に固有な道徳的に自覚された善悪の基準を持っている」とするもので、この理性的な善悪の観念を否定するのがカントの
copy

【次回予告】大規模言語モデルの行き詰まりで消えたrinnnaちゃんの本当の復活とは

 というわけで今回は、パラメータを激増させ、インターネットベースの粗雑なコーパスで学習量を思いっきり増やしたというGPT-2の設計思想の犠牲となり、暴言によって消えてしまったrinnaちゃんを中心にGPT-2の様子を見てみました。

 たしかにこれは、GPTの性能が爆発し過ぎで、爆弾の作り方を答えてもらったり、かわいい女子高生ボットに癒やしてもらおうと思ったら暴言を吐かれた、とかいうのでは生成AIのお先は真っ暗ですよね。

 Googleが世の中にとって危険だから、という理由で長らく自社のAI技術を門外不出にしていたのは、こういうことにタッチしたくなかったからです。

 では、どうしてChatGPTは大ブレイクできたのでしょうか。

 そこがこれです。

画像

 暴言を封じ込めることに成功してChatGPTを世の中にリリースできるように手懐けたRLHFとはいったいどのようなものなのでしょうか。

 GPT-3→GPT-3.5の時代はRLHFが最も注目すべき技術だと、みこちゃんは思っています(ちまたではあまりそうは考えられていないようですが)。

 この記事の前の方で引用したrinnaちゃんの最新版を思い出してください。

汎用言語モデルは、日本語のWikipedia・C4・CC-100 のオープンソースデータを用いて学習されています。対話言語モデルは、HH-RLHF・SHP・FLAN の一部を日本語に翻訳したデータを用いて学習されています。

 ChatGPTの時代に教師あり学習として人間の手を加えていたChatGPTは、2で暴走し、3.5で再び今度は教師あり学習ではなく、RLHFで人間のてを加えることで大ブレイクしました。

 そしてまたrinnaちゃんはRLHFを引っ提げて最先端日本語LLMとして復活したのです!

 そこらあたりを次回書いてみようと思います。

 (^-^)

⇒そもそも革命はどこからいつ始まった
GPT-1の本質が一発で分かる記事はこちら♪