Mermaid Street, Rye
© Copyright Cathy Cox and licensed for reuse under this Creative Commons Licence.

 

 

結果的に前回、前々回2回にわたってメタ(旧Facebook)の大規模言語モデルLlama-2を取り上げました。

ChatGPTが使えるクラウドとしては(今でも)MicrosoftのAzureしかありません。

ChatGPTとしてブラウザからGPT-4を使うのではなく、OpenAIの提供するAPIからGPT-4を呼び出し、Pythonのコードと組み合わせれば、ブラウザからChatGPTを利用するより手の込んだことができるだろうと思い、Azureを使いだしたのですが、そのMicrosoftがChatGPTだけでなく、Llama-2に関してもAzureクラウドから使えるようになったことを知ったときは、Microsoftに対して、新しいおもちゃをなんでも欲しがる子供のような印象をもちました。

が、前々回、ChatGPTの、「自分はB2C向けの生成系AIであるのに対して、Llama-2はB2B向けの生成系AIを目指しているのではないか」との指摘を聞き、AzureがChatGPTもLlama-2も、両方をサポートする意図が腑に落ちました。

 

さて、次に何を試してみようか?と考えたのですが、しばらく前に、アノLINEが日本語環境向けの大規模言語モデルを開発したとアナウンスしていたことを思い出しました。

LINEと言えば、5月ごろ、「リリースから2ヶ月!ChatGPTをLINEで使える「AIチャットくん」登録者数150万人を突破」というニュース記事を見て、さっそく登録し、使ってみましたが、「AIチャットくん」で使えるのはGPT-4ではないので、何度か使ってみただけで終わっていました。

LINEが独自の大規模言語モデルを開発し公開したというニュースが流れたのが8月。「36億パラメータの日本語言語モデルを公開しました

『LINEでは2020年11月から日本語に特化した大規模言語モデル「HyperCLOVA」の構築と応用に関わる研究開発に取り組んできた』とのことでしたので、同じく8月にアナウンスのあった「東京大学松尾研究室 100億パラメータサイズ・日英2ヶ国語対応の大規模言語モデル“Weblab-10B”を公開」のニュースとともに、頭の片隅には残っていたのですが、とりあえずChatGPTに関して、もっと理解を深めてからでないと、「虻蜂取らず」になるだけだと思い、手出しを控えていました。

 

で、今回は、そのLINEの大規模言語モデルについて調べることにしました。

なお、今回もMicrosoft Copilot(with Bing Chat)を利用しています。

 


 

私#1

LINEが開発しているLLMについて教えてください。

Copilot#1

LINEは、日本語に特化した大規模言語モデル(LLM)「japanese-large-lm」を開発し、オープンソースソフトウェア(OSS)として公開しました。このモデルには、36億パラメータモデル(3.6Bモデル)と17億パラメータモデル(1.7Bモデル)の2つがあります。

このプロジェクトは、LINEが2020年11月から進めてきた研究開発プロジェクトの一部で、その中で複数の大規模言語モデルの研究開発が行われていました。また、このモデルの訓練には、LINE独自の約650GBからなる大規模日本語Webコーパスが利用されています。

なお、近日中には、これらのモデルについて、指示文に対して適切な出力を行えるようにチューニング(Instruction tuning)したモデルも公開される予定です。これにより、さまざまなタスクを自律的にこなすAIエージェントとして活用することが期待されています。

 

私#2

試しに使ってみることはできますか?

Copilot#2

もちろんです。以下に、Google ColaboratoryでLINEのLLMを試すためのPythonコードを示します。

Python

AI で生成されたコード。ご確認のうえ、慎重にご使用ください。FAQ で詳細を確認。

# 必要なライブラリをインストールします

!pip install transformers xformers sentencepiece -q

# ライブラリをインポートします

import torch

from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline

# モデルとトークナイザーを設定します

model = AutoModelForCausalLM.from_pretrained(“line-corporation/japanese-large-lm-3.6b”, torch_dtype=torch.float16)

tokenizer = AutoTokenizer.from_pretrained(“line-corporation/japanese-large-lm-3.6b”, use_fast=False)

# テキスト生成パイプラインを作成します

generator = pipeline(“text-generation”, model=model, tokenizer=tokenizer, device=0)

# 推論を行います

text = generator(“おはようございます、今日の天気は”, max_length=30, do_sample=True, pad_token_id=tokenizer.pad_token_id, num_return_sequences=5)

# 結果を表示します

for t in text:

    print(t)

このコードは、”おはようございます、今日の天気は”というフレーズに対して、LLMが生成するテキストを表示します。max_lengthパラメータは生成されるテキストの最大長を制御し、num_return_sequencesパラメータは生成されるテキストの数を制御します。

このコードをGoogle ColaboratoryなどのPython環境で実行することで、LINEのLLMを試すことができます。ただし、このコードはあくまで一例であり、具体的な使用方法や設定は使用する環境や目的により異なる場合があります。詳細な使用方法や設定については、公式のドキュメンテーションや関連資料をご参照ください。

 

私#3

LINEアプリの中でチャットサービスとして使えるというようなことはないのでしょうか?

Copilot#3

現在のところ、LINEの大規模言語モデル(LLM)は、LINEアプリ内のチャットサービスとして直接利用することはできないようです。しかし、このモデルはオープンソースソフトウェア(OSS)として公開されており、商用利用も可能なApache License 2.0の下でライセンスされています。

したがって、開発者はこのモデルを自分のアプリケーションやサービスに組み込むことが可能です。

ただし、具体的な使用方法や設定は使用する環境や目的により異なる場合があります。詳細な使用方法や設定については、公式のドキュメンテーションや関連資料をご参照ください。また、今後のLINEのアップデートにより、この機能がLINEアプリ内で直接利用できるようになる可能性もあります。そのため、最新の情報を得るためには、LINEの公式ウェブサイトや公式発表を定期的にチェックすることをお勧めします。

 

私#4

Google Colaboratoryというのを使ったことがないのですが、どのようなものか、どうすれば使えるのかを教えてください

Copilot#4

Google Colaboratory(通称:Colab)は、ブラウザからPythonを実行できるGoogleのサービスです。以下に、その基本的な使い方を説明します。

  1. Googleアカウントの準備:まずはじめに、Googleアカウントが必要です。まだアカウントを持っていない場合は、Googleの公式サイトから取得してください。
  2. 新規ノートブックの作成:Google Colaboratoryの公式サイトにアクセスし、「ログイン」をクリックしてGoogleアカウントでログインします。その後、「ファイル」メニューから「ノートブックを新規作成」を選択すると、新しいノートブックが開きます。
  3. コードの実行:新規ノートブック内には、「コードセル」と呼ばれる場所があり、ここにPythonのコードを記述します。コードを記述したら、「Enter」キーを押すか、コードの左側にある実行ボタンをクリックすると、そのコードが実行されます。
  4. メモの追加:「テキストセル」と呼ばれる場所にはメモや説明文を記述できます12。テキストセルではマークダウン記法を使用して書くことができます。
  5. ファイルの扱い:Google Colabでは、CSVや画像などのファイルを扱うことも可能です。

以上が基本的な使い方ですが、詳細な使用方法や設定については公式のドキュメンテーションや関連資料をご参照ください。

 

私#5

ところで、「新規ノートブックの作成」でいっているノートブックとはどのようなものですか?

Copilot#5

Google Colaboratory(通称:Colab)の「ノートブック」とは、Pythonのコードとリッチテキスト(画像、HTML、LaTeXなど)を一つのドキュメント内に組み合わせることができるインタラクティブな環境のことを指します。

具体的には、ノートブックは「コードセル」と「テキストセル」で構成されています。

  • コードセル:Pythonのコードを記述し、実行する場所です。
  • テキストセル:メモや説明文を記述する場所です。

これらのセルを組み合わせて、コードの実行結果とその説明を一緒に記録することができます。これにより、分析の過程を明確に示すことができ、他の人と共有したり再現性を確保したりするのに役立ちます。

また、「新規ノートブックの作成」とは、新しいPythonの実行環境を開始することを意味します。新規ノートブックはGoogleドライブアカウントに保存され、後から再度開くことができます。これにより、過去の作業を続けることや、作業内容を他人と共有することが可能になります。

 

私#6

この「ノートブック」というのはPythonのプログラムの開発&テストに特化したものでしょうか?

Copilot#6

Google Colaboratory(通称:Colab)の「ノートブック」は、Pythonのプログラムの開発とテストだけでなく、さまざまな用途に使用できます。

  1. データサイエンス:Colabでは、Pythonのデータ分析ライブラリ(NumPyやpandasなど)を使用して、データの分析と可視化を行うことができます。
  2. 機械学習:Colabを使用すると、画像データセットのインポート、画像分類のトレーニング、モデルの評価など、機械学習に関連するタスクを数行のコードで実行できます。また、GoogleのGPUやTPUなどのハードウェアを利用することができます。
  3. 教育:Pythonや機械学習の教育にも使用されています。ノートブックは共有が容易であり、学生や教師がコードとその結果を一緒に記録し、共有することができます。
  4. コラボレーション:ノートブックはGoogleドライブアカウントに保存され、他人と簡単に共有し、コメントを記入したり編集したりすることができます。これにより、チームでのプロジェクト作業やコードレビューが容易になります。

以上のように、Colabのノートブックは多岐にわたる用途に対応しており、Pythonのプログラム開発とテストだけでなく、データ分析、機械学習、教育、コラボレーションなど、さまざまなタスクを効率的に行うためのツールとして利用されています。

 

私#7

この「ノートブック」というのは、Colab特有のサービスですか?

Copilot#7

「ノートブック」という形式は、Google Colaboratory(Colab)だけでなく、他の開発環境でも広く利用されています。

例えば、「Jupyter Notebook」は、PythonだけでなくRubyやR、Goなど40以上の言語がサポートされている統合開発環境で、ノートブック形式を採用しています。Jupyter Notebookは、データの視覚化や対話型の開発環境として利用され、前の実行結果に応じて次に実行するプログラムや作業を選択できます。

また、「Apache Zeppelin」もノートブック形式を採用しており、SparkやHadoopなどの並列分散処理システムの利用を伴う分析に対応しています。

 

これらのツールはすべて、コードの実行結果とその説明を一緒に記録することができ、自分自身の過去の作業内容の振り返りや、チームメンバーへ作業結果を共有する際に便利です。また、教育や研修などでの利用にも向いています。

 

私#8

この「ノートブック」形式の開発&テストスタイルというのは、最初に誰が考え出したものなのでしょうか?

Copilot#8

「ノートブック」形式の開発環境の起源は、「Project Jupyter」に遡ることができます。Project Jupyterは、2014年にFernando PérezによってIPythonから分離され、数十の言語の実行環境をサポートするようになりました。

Project Jupyterの名前は、Jupyterがサポートしている3つのコアプログラミング言語、Julia、Python、Rへの言及であり、またJupiterの衛星の発見を記録したGalileoのノートブックへのオマージュでもあります。

Project Jupyterは、インタラクティブなコンピューティング製品であるJupyter Notebook、JupyterHub、およびJupyter Notebookの次世代バージョンであるJupyterLabを開発してサポートしています。

このように、「ノートブック」形式の開発環境は、Project Jupyterとその前身であるIPython Notebookから始まりました。そして現在では、Google Colaboratory(Colab)やApache Zeppelinなど、さまざまな開発環境で「ノートブック」形式が採用されています。

 

私#9

Azure、AWS、IBMクラウドでも同じようなノートブック形式の開発&テストができるのでしょうか?

Copilot#9

はい、それぞれのクラウドプラットフォームには、ノートブック形式の開発環境が提供されています。

  • Azureでは、Azure Notebooksというサービスがあり、Python、R、F#などの言語をサポートしています。また、Azure Machine Learning Studioでもノートブック形式の開発環境が提供されています。
  • AWSでは、Amazon SageMakerがノートブック形式の開発環境を提供しています。SageMakerはJupyter Notebookをベースにしており、PythonやRなどの言語をサポートしています。
  • IBM Cloudでは、IBM Watson Studioがノートブック形式の開発環境を提供しています。Watson StudioのノートブックはJupyter Notebookをベースにしており、PythonやRなどの言語をサポートしています。

これらのプラットフォームでは、データ分析や機械学習のタスクを行うためにノートブックが広く利用されています。また、これらのプラットフォームはクラウド上で動作するため、大量のデータを扱うことや高性能な計算リソースを利用することも可能です。

 

 


 

以上、今回はLINEの大規模言語モデルを調査した結果と、最近のプログラム開発&デバッグ環境である「ノートブック」について、Copilot with Bing Chatに教えてもらいました。

最後に、教えてもらったGoogle Colabのノートブックの使い方に従ってLINEの36億パラメータの大規模言語モデルを使った際の画面コピーをご覧いただきましょう。

拡大表示

Copilot#2のプログラム例から変更したのは、以下の2点です

1)1,2行目に以下を追加

import locale

locale.getpreferredencoding = lambda: “UTF-8”

2)LINEのLLMに渡すプロンプトを例題の”おはようございます、今日の天気は”から“吾輩は猫である。名前は”に、回答を1つ生成(return_sequences=1)に変更

text = generator(“吾輩は猫である。名前は”, max_length=30, do_sample=True, pad_token_id=tokenizer.pad_token_id, num_return_sequences=1)

最初、Copilot#2で示されたPythonコードを実行すると、以下の実行エラーが出ました。

NotImplementedError: A UTF-8 locale is required. Got ANSI_X3.4-1968

 

そこで、

私#10

Google ColabでPythonコード実行時NotImplementedError: A UTF-8 locale is required. Got ANSI_X3.4-1968というエラーになりました。エラーが発生したのはget_ipython().system(‘pip install transformers xformers sentencepiece -q’)です。どのように対処すればよいですか?

と尋ねたところ、以下のアドバイスをしてくれたので、1)のにコードを追加したものです。

Copilot#10

Google ColabでNotImplementedError: A UTF-8 locale is required. Got ANSI_X3.4-1968というエラーが発生した場合、以下のPythonコードを実行してみてください。

Python

AI で生成されたコード。ご確認のうえ、慎重にご使用ください。FAQ で詳細を確認。

import locale

locale.getpreferredencoding = lambda: “UTF-8”

このコードは、PythonがUTF-8エンコーディングを使用するように指示します。このコードを実行した後に、再度pip install transformers xformers sentencepiece -qを実行してみてください。

それでも問題が解決しない場合は、Google Colabのランタイムを再起動してみてください。具体的には、「ランタイム」メニューから「ランタイムの再起動」を選択します。その後、再度必要なパッケージのインストールを試みてみてください。

これらの手順で問題が解決しない場合は、さらなるトラブルシューティングが必要となる可能性があります。その際は、具体的なエラーメッセージや状況について詳しく教えていただければと思います。また、公式のドキュメンテーションや関連資料もご参照ください。

 

このようにCopilotは(というか、そのバックにあるBing/GPT-4はといった方が正しいですが)まるで経験豊富なプログラマのように、適切なアドバイスをしてくれます。

 

2)についてはLINEの大規模言語モデルがどの程度賢いのか試したかったので、例題の文章と入れ替えました。

 

■ ChatGPT(GPT-3.5)で同じように「吾輩は猫である。名前は」とした際の回答は

おそらく、あなたが猫であることについては、あなたのプロフィール情報とは直接関係がないようです。どのような質問や情報をお探しですか?お手伝いできることがあれば教えてください。

■ ChatGPT(GPT-4 default)で同じように「吾輩は猫である。名前は」とした際の回答は

まだ無い。

この名高い一節は、夏目漱石の有名な小説『吾輩は猫である』から来ています。物語は名前のない猫を主人公とし、人間社会を風刺的な視点で描いています。何か特定の質問や話題がありましたら、どうぞお知らせください。

でした。

これらの回答と比べると、LINEのLLMからの以下の回答内容は、漱石の小説の中の文章であると理解はしているようなので、GPT-3.5とGPT-4の間くらいの「賢さ」と考えてよいでしょうか?

2017/01/09というのは没後100周年というわけでもなさそうなので、何なのかよくわかりませんが。

{‘generated_text’: ‘吾輩は猫である。名前は漱石。|2017/01/09 20.32| ‘}

 

本日は以上です。

 

終わり