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

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

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

概要

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

引用:https://huggingface.co/lightblue/suzume-llama-3-8B-japanese-gguf

実装

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

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

!pip install llama-cpp-python

モデルを準備します。

from llama_cpp import Llama

llm = Llama.from_pretrained(
    repo_id="lightblue/suzume-llama-3-8B-japanese-gguf",
    filename="ggml-model-Q8_0.gguf",
    n_ctx=512,

) 

prompt_template = """<|begin_of_text|><|start_header_id|>system<|end_header_id|> あなたは誠実で優秀な日本人のアシスタントです。<|eot_id|><|start_header_id|>user<|end_header_id|> {prompt}<|eot_id|><|start_header_id|>assistant<|end_header_id|> [/INST]"""

質問応答

prompt = "日本一高い山について解説してください。"

output = llm(prompt_template.format(prompt=prompt), max_tokens=-1)
print(output)

実行結果:

こんにちは。日本一高い山として、標高3,776メートルの富士山が挙げられます。
これは、日本の国技である登山でも、また、日本のシンボルであり、日本人にとって非常に重要な存在です。
富士山は、多くの文化的、歴史的な意味を持っており、その美しさや壮観さから、「日本一高い山」として広く知られています。

富士山の登り方
----------------
富士山への登山には、通常、専門のガイドを雇うことが一般的です。
また、登山する前には、体調を整えるとともに、富士山に関する情報やルーティングを見直すことが重要です。
登る際には、安全な道を行くことをお勧めします。

富士山の特徴\n----------------
**標高**: 3,776メートル - 日本一高い山。
**雪質**: 白い雪が豊かで、美しい景色を提供する。
**登り方**: 多様なルーティングがあり、専門のガイドを雇うことが一般的。

富士山に関するおすすめ情報
--------------------------------
**登山シーズン**: 7月から9月まで - 最も安全で美しい季節。
**アクセス**: 東京都や静岡県に最も近い。
**注意点**: 登山前には体調を整え、ルーティングを見直してください。
富士山への登山は、日本の登山文化の一つであり、国民的な愛情を持っております。
また、その美しさと壮観さから、世界中の人々にも親しまれています。

要約

prompt = """

以下の文章を箇条書きで要約してください。

富士山(ふじさん)は、静岡県(富士宮市、富士市、裾野市、御殿場市、駿東郡小山町)と山梨県(富士吉田市、南都留郡鳴沢村)に跨る活火山である。
標高3776.12 m、日本最高峰(剣ヶ峰)の独立峰で、その優美な風貌は日本国外でも日本の象徴として広く知られている。
数多くの芸術作品の題材とされ芸術面のみならず、気候や地層など地質学的にも社会に大きな影響を与えている。
懸垂曲線の山容を有した玄武岩質成層火山で構成され、その山体は駿河湾の海岸まで及ぶ。
古来より霊峰とされ、特に山頂部は浅間大神が鎮座するとされたため、神聖視された。
噴火を沈静化するため律令国家により浅間神社が祭祀され、浅間信仰が確立された。
また、富士山修験道の開祖とされる富士上人により修験道の霊場としても認識されるようになり、登拝が行われるようになった。
これら富士信仰は時代により多様化し、村山修験や富士講といった一派を形成するに至る。
現在、富士山麓周辺には観光名所が多くある他、夏季シーズンには富士登山が盛んである。
日本三名山(三霊山)、日本百名山[2]、日本の地質百選に選定されている。
また、1936年(昭和11年)には富士箱根伊豆国立公園に指定されている。
その後、1952年(昭和27年)に特別名勝、2011年(平成23年)に史跡、
さらに2013年(平成25年)6月22日には関連する文化財群とともに「富士山-信仰の対象と芸術の源泉」の名で世界文化遺産に登録された。

"""

output = llm(prompt_template.format(prompt=prompt), max_tokens=-1)
print(output)

実行結果:

富士山概要

富士山は静岡県と山梨県にまたがる活火山で、標高3,776.12 m、高さ約1,000 mの独立峰である。
風貌が日本国外でも日本の象徴として広く知られており、日本最高峰である。
気候や地層など地質学的にも社会に大きな影響を与えている。

山体は駿河湾の海岸まで及ぶ玄武岩質成層火山で、懸垂曲線の山容を持っている。

古くから霊峰として認識されており、特に山頂部には浅間大神が鎮座するとされていたため、神聖視された。
浅間神社の祭祀により、浅間信仰が確立され、その後富士上人の開祖とされる修験道の霊場としても認識されるようになった。

富士信仰は時代によって多様化し、一派を形成するに至った(村山修験や富士講など)。
現在、観光名所が多くあり、夏季シーズンには登山者が多い。
日本三名山、日本百名山、地質百選の指定を受けている。
1936年に富士箱根伊豆国立公園に指定された後、1952年特別名勝、2011年史跡に認定されている。
2013年に「富士山-信仰の対象と芸術の源泉」として世界文化遺産に登録され、関連する文化財群も含まれている。

翻訳(日本語→英語)

prompt = """

以下の文章を日本語から英語に翻訳してください。

日本で一番高い山は富士山です。富士山は山梨県と静岡県の境目にある活火山で、標高は3,776メートルです。
日本最高峰だけではなく世界的にも有名な活火山で、「日本の象徴」とも言われています。

"""
output = llm(prompt_template.format(prompt=prompt), max_tokens=-1)
print(output)

実行結果:

Japan\'s highest mountain is Mount Fuji. 
Mount Fuji is a volcano located at the border of Yamanashi Prefecture and Shizuoka Prefecture, with an elevation of 3,776 meters. 
It is not only Japan\'s highest peak but also a famous active volcano known globally, often referred to as "Japan\'s symbol.

翻訳(英語→日本語)

prompt =  """

以下の文章を英語から日本語に翻訳してください。

The highest mountain in Japan is Mount Fuji. 
Mount Fuji is located at the boundary of Yamanashi and Shizuoka prefectures in Japan, 
and it has an elevation of 3776 meters above sea level. 
It is one of the active volcanos that are well known around the world as a symbol of Japan.

"""
output = llm(prompt_template.format(prompt=prompt), max_tokens=-1)
print(output)

実行結果:

日本最高の山は富士山です。
富士山は、日本の長野県と静岡県の境界に位置し、海抜3,776メートルです。
これは、日本を象徴することで知られる活火山の一つです。

感情分析

prompt =  """

次の文章の感情を、ポジティブ、ネガティブ、ニュートラルに分類してください。
・富士山の頂上からの眺めは息をのむほど美しかった。
・富士山登山中に怪我をして、下山するのが大変だった。
・富士山は日本の最高峰で、標高は3,776mである。

"""
output = llm(prompt_template.format(prompt=prompt), max_tokens=-1)
print(output)

実行結果:

(1) ポジティブ (2) ネガティブ (3) フactual (or "ニュートラル")

固有表現抽出

prompt = """

次の文章中から、地名、人名、組織名を抽出してください。
文章:鈴木次郎は、静岡県にある富士山の麓で開催された、環境省主催の自然保護イベントに参加した。

"""
output = llm(prompt_template.format(prompt=prompt), max_tokens=-1)
print(output)

実行結果:

地名: 静岡県、富士山
人名: 鈴木次郎
組織名: 環境省

論理推論

prompt = """

次の文章が論理的に正しいかどうかを判定し、正しくない場合は理由を説明してください。
文章:富士山は日本で最も標高が高い山です。エベレストは世界で最も高い山です。したがって、富士山はエベレストよりも高いはずです。

"""
output = llm(prompt_template.format(prompt=prompt), max_tokens=-1)
print(output)

実行結果:

この文は論理的に正しくありません。理由は、文中の「日本で最も標高が高い山」であることを指摘することから、「世界で最も高い山」という情報を考えると矛盾があるためです。富士山が日本で最も高い山であることは間違いなくですが、これはエベレストよりも低い可能性があります。エベレストは、標高6,848mで世界の最高峰であり、その高度は富士山(標高3,776m)の約2倍以上です。文中の結論である「富士山はエベレストよりも高いはず」は、これら二つの情報を一貫して考慮していないため、誤りです。

計算・数学問題

prompt = """

富士山の標高は3,776mです。
山頂までの距離が30kmだとします。
平均斜度(パーセント)を求めてください。

"""
output = llm(prompt_template.format(prompt=prompt), max_tokens=-1)
print(output)

実行結果:

1. 山頂までの距離をメートルに変換する。
2. 標高から標高1mあたりの長さ(約2,000m/1,000m = 2)を求める。
3. 長さ1を長さ2で割る。

これらの手順を踏むことで、山頂までの距離を用いた平均斜度を計算できます。
ただし、富士山の標高を用いると、実際の斜度はこの値と異なる可能性があります。

プログラミング・コーディング

prompt = """
富士山の標高をメートルで入力すると、フィートに変換して出力するPythonプログラムを作成してください

"""
output = llm(prompt_template.format(prompt=prompt), max_tokens=-1)
print(output)

実行結果:

1. **プログラミング言語としてPythonを選択**
2. **ユーザーから富士山の標高(メートル)を受け取る機能を追加**

- `input()`関数を使用して、ユーザーからの入力を受け取る

3. **メートルの値をフィートに変換するアルゴリズムを実装**
- メートルからフィートへの変換の公式は1メートル = 3.2808フートであるので、これを使用して変換を行う

4. **結果を表示する**
- `print()`関数を使用して、ユーザーに変換された値を出力

以下に、その手順に従って作成したプログラムの一例です。

```python
# ユーザーから富士山の標高(メートル)を受け取り
富士山の標高 = float(input("富士山の標高(メートル)を入力してください: "))

# メートルの値をフィートに変換
富士山の標高_フィート = 富士山の標高 * 3.2808
# 結果を表示
print(f"富士山の標高は{富士山の標高}メートルで、{rich Fuji height: .2f}フィートです")
```

このプログラムを実行する際には、ユーザーから富士山の標高(メートル)を入力し、それがフィートに変換される結果が表示されます。

文章校正

prompt = """

次の富士山に関する文章の誤りを指摘し、修正してください。 
文章:富士山は静岡県にある活火山で、最後に噴火したのは1707年です。富士山は楽に登れる山なので、初心者でも簡単に登頂できます。
"""
output = llm(prompt_template.format(prompt=prompt), max_tokens=-1)
print(output)

実行結果:

誤り1: 富士山が静岡県に存在する。
修正: 富士山は静岡県と山梨県の境界付近にある。

誤り2: 最後まで噴火したのは1707年であることの表現。
修正: 最近の大規模な噴火(宝永大噴出物)が1707年に起こったため、最近まで噴火したと言ってもいいです。
ただし、活火山でありながら長期間にわたって活動が見られていなかったり、その間の活動が小さくて気付かれなかったりすることがあります。

誤り3: 富士山が楽に登れることの表現。
修正: 富士山を登るのは、特に初心者にはやや難しいです。登るときには、適切な装備と体力が必要です。
また、登山する際は、自然保護法規に関する知識と注意が求められます。

修正文:
富士山は静岡県と山梨県の境界付近にある活火山で、最近の大規模な噴火(宝永大噴出物)が1707年に起こりました。
富士山を登るのは、特に初心者にはやや難しいですが、登るときには適切な装備と体力が必要です。
また、自然保護法規に関する知識と注意が求められます。

まとめ

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