rinna/gemma-2-baku-2b によるテキスト生成 Colab プログラム

【概要】rinnaのgemma-2-baku-2bモデルを使用した日本語テキスト自動生成プログラムの利用ガイドである。文章作成支援や創作活動に活用でき、生成パラメータの制御により多様性と品質のバランスを調整できる。Google Colabで実行可能で、トップKサンプリングとトップPサンプリングによる確率的テキスト生成を実現する。

Colab のページ(ソースコードと説明): https://colab.research.google.com/drive/1osXWRtW-0HWnZh9haU5VMydpc867SolQ?usp=sharing

Google Colabの実行画面

【目次】

  1. プログラム利用ガイド
  2. プログラムの説明
  3. 実験・研究スキルの基礎:Google Colabで学ぶテキスト生成実験

プログラム利用ガイド

1. このプログラムの利用シーン

日本語の文章を入力として与え、その続きを自動生成するプログラムである。文章作成の支援、創作活動、言語モデルの動作確認などに利用できる。

2. 主な機能

日本語テキストの自動生成

入力文の続きを自動的に生成する。

生成パラメータの制御

トップKサンプリング(top_k=500)とトップPサンプリング(top_p=0.95)により、生成されるテキストの多様性を制御する。

固定長出力

常に100トークンのテキストを生成する。

3. 基本的な使い方

手順1:Colab のページを開く

Colab のページ(ソースコードと説明): https://colab.research.google.com/drive/1osXWRtW-0HWnZh9haU5VMydpc867SolQ?usp=sharing

手順2:セルを実行する

モデルが自動的にダウンロードされ、指定した入力文の続きが生成される。

手順3:入力文の変更

textという変数の値を変更することで、任意の入力文に対する続きを生成できる。

手順4:結果の確認

生成されたテキストは、入力文を含む完全な文章として出力される。

4. 便利な機能

自動モデルダウンロード

初回実行時にモデルが自動的にダウンロードされ、2回目以降はキャッシュから読み込まれる。

プログラムの説明

概要

このプログラムは、rinnaのgemma-2-baku-2bモデルを使用した自動テキスト生成プログラムである。入力文の続きを自動生成する機能を持つ[1]。

主要技術

Transformersライブラリ(Hugging Face)

Hugging Faceが開発したオープンソースのライブラリである[2]。事前学習済みモデルの利用を簡素化し、自然言語処理タスクに対応する統一的なAPIを提供する。PyTorchやTensorFlowと統合され、100万以上の事前学習済みモデルを利用できる。

Gemma

Transformerアーキテクチャに基づく自己回帰型言語モデルである。大規模なテキストデータで事前学習を行い、入力文脈から次のトークンを予測する方式でテキストを生成する。

技術的特徴

トップKサンプリング

各ステップで確率の高い上位K個のトークンから次のトークンを選択する手法である。本プログラムではK=500に設定されている。

トップPサンプリング(Nucleus Sampling)

累積確率がP(本プログラムではp=0.95)を超える最小のトークン集合から次のトークンを選択する手法である[3]。トップKサンプリングと併用することで、文脈に応じた動的なトークン選択を実現する。

確率的テキスト生成

do_sample=Trueにより、決定論的な生成ではなく確率分布に基づくサンプリングを行う。これにより生成されるテキストに多様性が生まれる。

勾配計算の無効化

torch.no_grad()コンテキストを使用し、推論時の勾配計算を無効化することでメモリ使用量を削減する。

実装の特色

固定長生成

max_lengthとmin_lengthを100に設定することで、常に100トークンのテキストを生成する。

特殊トークン制御

pad_token_id(パディング)、bos_token_id(文頭)、eos_token_id(文末)、bad_words_ids(未知語)を明示的に指定し、生成品質を制御する。

参考文献

[1] Sawada, K., Zhao, T., Shing, M., Mitsui, K., Kaga, A., Hono, Y., Wakatsuki, T., & Mitsuda, K. (2024). Release of Pre-Trained Models for the Japanese Language. In Proceedings of the 2024 Joint International Conference on Computational Linguistics, Language Resources and Evaluation (LREC-COLING 2024) (pp. 13898-13905). https://aclanthology.org/2024.lrec-main.1213

[2] Wolf, T., et al. (2020). HuggingFace's Transformers: State-of-the-art Natural Language Processing. arXiv:1910.03771. https://arxiv.org/abs/1910.03771

[3] Holtzman, A., Buys, J., Du, L., Forbes, M., & Choi, Y. (2020). The Curious Case of Neural Text Degeneration. In ICLR 2020.

[4] Radford, A., Narasimhan, K., Salimans, T., & Sutskever, I. (2018). Improving Language Understanding by Generative Pre-Training. OpenAI. https://cdn.openai.com/research-covers/language-unsupervised/language_understanding_paper.pdf

実験・研究スキルの基礎:Google Colabで学ぶテキスト生成実験

1. 実験・研究のスキル構成要素

実験や研究を行うには、以下の5つの構成要素を理解する必要がある。

1.1 実験用データ

このプログラムでは入力テキスト(プロンプト)が実験用データである。入力テキストは生成の起点となり、その内容や長さが生成結果に影響を与える。

1.2 実験計画

何を明らかにするために実験を行うのかを定める。

計画例:

1.3 プログラム

実験を実施するためのツールである。このプログラムはrinnaのgemma-2-baku-2bモデルとHugging Face Transformersライブラリを使用している。

1.4 プログラムの機能

このプログラムは複数のパラメータでテキスト生成を制御する。

入力パラメータ:

出力情報:

実験における変更可能な要素:

1.5 検証(結果の確認と考察)

プログラムの実行結果を観察し、パラメータの影響を考察する。

基本認識:

観察のポイント:

2. 間違いの原因と対処方法

2.1 プログラムのミス(人為的エラー)

モデルのダウンロードに時間がかかる

2.2 期待と異なる結果が出る場合

生成されたテキストが不自然または意味不明

生成されたテキストが毎回ほぼ同じ内容になる

生成されたテキストが入力と全く関係ない内容になる

文章が途中で終わっている

同じ単語やフレーズが繰り返される

3. 実験レポートのサンプル

top_kパラメータが生成テキストの多様性に与える影響

実験目的:

top_kパラメータの値を変化させることで、生成されるテキストの多様性と品質がどのように変化するかを明らかにする。

実験計画:

top_p=0.95、max_length=100に固定し、top_k値を変化させて同じ入力テキストに対する生成を行う。各設定で5回ずつ生成し、多様性と品質を評価する。

実験方法:

入力テキスト「人工知能の授業を受けました。人工知能の基礎は」を使用し、プログラムを実行する。以下の基準で評価する:

実験結果:

top_k値 多様性(異なるパターン数/5回) 自然性(平均) 一貫性(平均) 総合評価
xxx xxx xxx xxx xxx
xxx xxx xxx xxx xxx
xxx xxx xxx xxx xxx
xxx xxx xxx xxx xxx

考察:

結論:

(例文)本実験により、top_kパラメータが生成テキストの多様性と品質に大きな影響を与えることが確認できた。top_k=xxx程度が、多様性と品質のバランスが優れており、実用的な設定であると結論づけられる。創造的で予測不可能な文章生成を目指す場合はtop_k=xxx程度、安定した品質を重視する場合はtop_k=xxxからxxxが適切である。応用目的に応じてパラメータを調整する必要性が明らかになった。