このシリーズではChatGPTを中心とした最新の大規模言語モデル(LLM)に関する情報をまとめています。最新AI技術を使用した「ChatGPT」をはじめとした、自然言語処理技術の概要や活用方法について紹介しておりますので、ぜひ最後までご覧ください。

※大規模言語モデルは技術の進歩がとても速い分野となりますので、最新の情報もこちらからご確認ください。

今回の記事では日本語LLMの1つであるCyberAgentLM2-7B-Chatの実装を紹介します。
Google Colabを使用して簡単に実装できますので、ぜひ最後までご覧ください。

CyberAgentLM2-7B-Chatの概要

CyberAgentLM2-7B-Chatとは

CyberAgentLM2-7B-Chatは株式会社サイバーエージェントから2023年11月2日にリリースされた日本語大規模言語モデルです。

同社は以前から日本語LLMの開発に注力しており、2023年5月に初版の「CyberAgentLM」を公開。今回公開されたモデルは、日本語と英語のデータで事前学習された基本モデル「CyberAgentLM2-7B」と、チャット形式にチューニングされた「CyberAgentLM2-7B-Chat」の2種類で、約50,000文字の日本語文章を一度に処理できます。モデルは商用利用可能なApache License 2.0で提供され、Hugging Faceのウェブサイトから利用できます。

詳細は以下のリンクからご確認ください。

CyberAgentLM2-7B-Chatの実装

ここからはGoogle colabを使用して実装していきます。
(Google colabの使用方法はこちら⇨使い方

※今回紹介するコードは以下のリンクからもご覧いただけます。

Open In Colab

まずはGPUを使用できるように設定をします。

・「ランタイムのタイプを変更」→「ハードウェアアクセラレータ」を(T4)GPUに変更
(参考)GPU RAM:13.9GB

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

!pip install transformers accelerate

①質問応答:AIによって私達の暮らしはどのように変わりますか?

テンプレートの通りに動かしてみます。

import transformers
from transformers import AutoModelForCausalLM, AutoTokenizer, TextStreamer

assert transformers.__version__ >= "4.34.1"

model = AutoModelForCausalLM.from_pretrained("cyberagent/calm2-7b-chat", device_map="auto", torch_dtype="auto")
tokenizer = AutoTokenizer.from_pretrained("cyberagent/calm2-7b-chat")
streamer = TextStreamer(tokenizer, skip_prompt=True, skip_special_tokens=True)

prompt = """USER: AIによって私達の暮らしはどのように変わりますか?
ASSISTANT: """

token_ids = tokenizer.encode(prompt, return_tensors="pt")
output_ids = model.generate(
    input_ids=token_ids.to(model.device),
    max_new_tokens=300,
    do_sample=True,
    temperature=0.8,
    streamer=streamer,
)

実行結果:

人工知能(AI)は、人々の生活を劇的に変える可能性があります。以下にいくつかの例を挙げます。

1. 仕事の変革:AIは、ホワイトカラー業務の自動化や効率化を推進し、生産性を向上させ、長時間労働を減らし、より創造的な仕事に専念できるようにする可能性があります。

2. 医療の変革:AIを活用した医療技術の進歩により、病気の予防、診断、治療が劇的に改善される可能性があります。

3. 金融の変革:AIは、金融取引の自動化、リスク管理の最適化、金融商品の開発に役立つ可能性があります。

4. 交通の変革:自動運転車の実現により、交通事故の減少、交通渋滞の緩和、公共交通機関の効率の向上などが期待されます。

5. メディアの変革:AIを活用したコンテンツの自動生成やパーソナライズドレーティングにより、より個人に合ったニュースやエンターテイメントが楽しめるように

②要約

import transformers
from transformers import AutoModelForCausalLM, AutoTokenizer, TextStreamer

assert transformers.__version__ >= "4.34.1"

model = AutoModelForCausalLM.from_pretrained("cyberagent/calm2-7b-chat", device_map="auto", torch_dtype="auto")
tokenizer = AutoTokenizer.from_pretrained("cyberagent/calm2-7b-chat")
streamer = TextStreamer(tokenizer, skip_prompt=True, skip_special_tokens=True)

prompt = """USER: 次の文章を要約してください。自然言語処理(Natural Language Processing, NLP)とは、人間が日常的に使っている自然言語をコンピュータに理解させ、解析や生成を行うための技術のことです。自然言語とは、私たちが普段話したり、書いたりしている言語、例えば日本語や英語などを指します。対照的に、プログラミング言語などは「人工言語」と呼ばれるもので、これは人間がコンピュータとコミュニケーションを取るために特別に設計された言語です。自然言語処理の目標は、テキストや音声データを含む自然言語の情報をコンピュータが理解し、活用できるようにすることです。具体的な応用例としては、検索エンジン、音声認識システム(例:スマートフォンの音声アシスタント)、機械翻訳(例:ウェブページの自動翻訳)、文章の自動要約、感情分析(例:商品レビューからの評判分析)などがあります。自然言語処理においては、言葉の意味を理解するために、文法や単語の意味、文脈などを解析する必要があります。例えば、「彼はバスで学校に行った」という文を考えた時、この文が何を意味しているかを理解するためには、「バス」という単語が乗り物を指していること、そして「学校に行った」という動作が「彼」に関連していることを把握する必要があります。これらを行うための技術として、形態素解析(文章を単語に分割する)、構文解析(文の構造や文法関係を解析する)、意味解析(単語や文の意味を理解する)、感情分析(テキストから感情や意見を判定する)などがあります。近年では、深層学習や機械学習の技術が発展しており、これらを活用してより高度な自然言語処理を行う研究やアプリケーションが多数存在します。?
ASSISTANT: """

token_ids = tokenizer.encode(prompt, return_tensors="pt")
output_ids = model.generate(
    input_ids=token_ids.to(model.device),
    max_new_tokens=300,
    do_sample=True,
    temperature=0.8,
    streamer=streamer,
)

実行結果:

自然言語処理(NLP)とは、人間が日常的に使う言葉をコンピュータに理解させ、解析や生成を行う技術のことです。
自然言語とは、日本語や英語などの人間が日常的に話している言語のことを指します。
対照的に、プログラミング言語などは人工言語と呼ばれ、人間がコンピュータとコミュニケーションを取るために特別に設計されたものを指します。
自然言語処理の主な応用例としては、検索エンジン、音声認識システム、機械翻訳、文章の自動要約、感情分析などがあります。
NLPでは、言葉の意味を理解するために、文法や単語の意味、文脈などを解析する必要があります。
例えば、「彼はバスで学校に行った」という文を理解するためには、「バス」や「学校」が何を指すかを把握する必要があります。
NLPにおける技術には、形態素解析、構文解析、意味解析、感情分析などがあります。
近年では、深層学習や機械学習の発展により、より高度な自然言語処理が可能になっています。

要約結果を比較してみます。

(入力)
自然言語処理(Natural Language Processing, NLP)とは、人間が日常的に使っている自然言語をコンピュータに理解させ、解析や生成を行うための技術のことです。
自然言語とは、私たちが普段話したり、書いたりしている言語、例えば日本語や英語などを指します。
対照的に、プログラミング言語などは「人工言語」と呼ばれるもので、これは人間がコンピュータとコミュニケーションを取るために特別に設計された言語です。
自然言語処理の目標は、テキストや音声データを含む自然言語の情報をコンピュータが理解し、活用できるようにすることです。
具体的な応用例としては、検索エンジン、音声認識システム(例:スマートフォンの音声アシスタント)、機械翻訳(例:ウェブページの自動翻訳)、文章の自動要約、感情分析(例:商品レビューからの評判分析)などがあります。
自然言語処理においては、言葉の意味を理解するために、文法や単語の意味、文脈などを解析する必要があります。
例えば、「彼はバスで学校に行った」という文を考えた時、この文が何を意味しているかを理解するためには、「バス」という単語が乗り物を指していること、そして「学校に行った」という動作が「彼」に関連していることを把握する必要があります。
これらを行うための技術として、形態素解析(文章を単語に分割する)、構文解析(文の構造や文法関係を解析する)、意味解析(単語や文の意味を理解する)、感情分析(テキストから感情や意見を判定する)などがあります。
近年では、深層学習や機械学習の技術が発展しており、これらを活用してより高度な自然言語処理を行う研究やアプリケーションが多数存在します。

(出力)
自然言語処理(NLP)とは、人間が日常的に使う言葉をコンピュータに理解させ、解析や生成を行う技術のことです。
自然言語とは、日本語や英語などの人間が日常的に話している言語のことを指します。
対照的に、プログラミング言語などは人工言語と呼ばれ、人間がコンピュータとコミュニケーションを取るために特別に設計されたものを指します。
自然言語処理の主な応用例としては、検索エンジン、音声認識システム、機械翻訳、文章の自動要約、感情分析などがあります。
NLPでは、言葉の意味を理解するために、文法や単語の意味、文脈などを解析する必要があります。
例えば、「彼はバスで学校に行った」という文を理解するためには、「バス」や「学校」が何を指すかを把握する必要があります。
NLPにおける技術には、形態素解析、構文解析、意味解析、感情分析などがあります。
近年では、深層学習や機械学習の発展により、より高度な自然言語処理が可能になっています。

まとめ

最後までご覧いただきありがとうございました。

今回の記事では日本語LLMの1つであるCyberAgentLM2-7B-Chatの実装を紹介しました。