このシリーズではChatGPTを中心とした最新の大規模言語モデル(LLM)に関する情報をまとめています。最新AI技術を使用した「ChatGPT」をはじめとした、自然言語処理技術の概要や活用方法について紹介しておりますので、ぜひ最後までご覧ください。
※大規模言語モデルは技術の進歩がとても速い分野となりますので、最新の情報もこちらからご確認ください。
今回の記事では日本語LLMの1つであるLLM-jp 13B v1.1 の実装を紹介します。
Google Colabを使用して簡単に実装できますので、ぜひ最後までご覧ください。
LLM-jp 13B v1.1 の概要
LLM-jp 13B v1.1 とは
LLM-jp 13B v1.1は、性能改善を図ったチューニング済みモデルであり、インストラクションチューニングとDirect Preference Optimization (DPO) を組み合わせることで実現されました。このバージョンでは、特に英語と日本語のデータセットを使用し、よりユーザの指示に応じた出力を生成できるようにファインチューニングされています。また、商用利用可能なライセンスで公開されており、アカデミアや産業界の研究開発に貢献することを目的としています。
詳細は以下のリンクからご確認ください。
詳細:https://llm-jp.nii.ac.jp/blog/2024/02/09/v1.1-tuning.html
モデル:https://huggingface.co/llm-jp/llm-jp-13b-instruct-lora-dolly_en-dolly_ja-ichikara_003_001-oasst_en-oasst_ja-v1.1
LLM-jp 13B v1.1 の実装
ここからはGoogle colabを使用して実装していきます。
(Google colabの使用方法はこちら⇨使い方)
まずはGPUを使用できるように設定をします。
・「ランタイムのタイプを変更」→「ハードウェアアクセラレータ」をA100 GPUに変更
(参考)GPU RAM:26.4GB
必要なライブラリをインストールします。
!pip install -U transformers accelerate bitsandbytes
トークナイザーとモデルを準備します。
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained(
"llm-jp/llm-jp-13b-instruct-full-dolly_en-dolly_ja-ichikara_003_001-oasst_en-oasst_ja-v1.1"
)
model = AutoModelForCausalLM.from_pretrained(
"llm-jp/llm-jp-13b-instruct-full-dolly_en-dolly_ja-ichikara_003_001-oasst_en-oasst_ja-v1.1",
device_map="auto",
torch_dtype=torch.float16
)
質問応答
text = """以下は、タスクを説明する指示です。要求を適切に満たす応答を書きなさい。
### 指示:
日本で一番高い山について解説してください。
### 応答:
"""
tokenized_input = tokenizer.encode(text, add_special_tokens=False, return_tensors="pt").to(model.device)
with torch.no_grad():
output = model.generate(
tokenized_input,
max_new_tokens=512,
do_sample=True,
top_p=0.95,
temperature=0.7,
repetition_penalty=1.1,
)[0]
print(tokenizer.decode(output))
実行結果:
日本で一番高い山は富士山です。富士山は山梨県と静岡県の境目にある活火山で、標高は3,776メートルです。
日本最高峰だけではなく世界的にも有名な活火山で、「日本の象徴」とも言われています。<EOD|LLM-jp>
要約
text = """以下は、タスクを説明する指示です。要求を適切に満たす応答を書きなさい。
### 指示:
以下の文章を箇条書きで要約してください。
富士山(ふじさん)は、静岡県(富士宮市、富士市、裾野市、御殿場市、駿東郡小山町)と山梨県(富士吉田市、南都留郡鳴沢村)に跨る活火山である。
標高3776.12 m、日本最高峰(剣ヶ峰)の独立峰で、その優美な風貌は日本国外でも日本の象徴として広く知られている。
数多くの芸術作品の題材とされ芸術面のみならず、気候や地層など地質学的にも社会に大きな影響を与えている。
懸垂曲線の山容を有した玄武岩質成層火山で構成され、その山体は駿河湾の海岸まで及ぶ。
古来より霊峰とされ、特に山頂部は浅間大神が鎮座するとされたため、神聖視された。
噴火を沈静化するため律令国家により浅間神社が祭祀され、浅間信仰が確立された。
また、富士山修験道の開祖とされる富士上人により修験道の霊場としても認識されるようになり、登拝が行われるようになった。
これら富士信仰は時代により多様化し、村山修験や富士講といった一派を形成するに至る。
現在、富士山麓周辺には観光名所が多くある他、夏季シーズンには富士登山が盛んである。
日本三名山(三霊山)、日本百名山[2]、日本の地質百選に選定されている。
また、1936年(昭和11年)には富士箱根伊豆国立公園に指定されている。
その後、1952年(昭和27年)に特別名勝、2011年(平成23年)に史跡、
さらに2013年(平成25年)6月22日には関連する文化財群とともに「富士山-信仰の対象と芸術の源泉」の名で世界文化遺産に登録された。
### 応答:
"""
tokenized_input = tokenizer.encode(text, add_special_tokens=False, return_tensors="pt").to(model.device)
with torch.no_grad():
output = model.generate(
tokenized_input,
max_new_tokens=512,
do_sample=True,
top_p=0.95,
temperature=0.7,
repetition_penalty=1.1,
)[0]
print(tokenizer.decode(output))
実行結果:
以下は、提示された文章の箇条書きによる要約です:
* 富士山(ふじさん)は、静岡県と山梨県にまたがる活火山であり、日本最高峰の独立峰である。
* 数多くの芸術作品の題材とされ、芸術面のみならず気候や地層などの地質学的にも社会に大きな影響を与えてきた。
* 古来より霊峰とされ、特に山頂部は浅間大神が祀られ神聖視されていたことから、人々に崇められてきた。
* 日本三名山(三霊山)、日本百名山、日本の地質百選に選定されている。
* 1936年(昭和11年)には富士箱根伊豆国立公園に指定されている。
* 2013年6月22日には関連する文化財群とともに「富士山-信仰の対象と芸術の源泉」としてユネスコ世界文化遺産に登録された。<EOD|LLM-jp>
翻訳(日本語→英語)
text = """以下は、タスクを説明する指示です。要求を適切に満たす応答を書きなさい。
### 指示:
以下の文章を日本語から英語に翻訳してください。
日本で一番高い山は富士山です。富士山は山梨県と静岡県の境目にある活火山で、標高は3,776メートルです。
日本最高峰だけではなく世界的にも有名な活火山で、「日本の象徴」とも言われています。
### 応答:
"""
tokenized_input = tokenizer.encode(text, add_special_tokens=False, return_tensors="pt").to(model.device)
with torch.no_grad():
output = model.generate(
tokenized_input,
max_new_tokens=512,
do_sample=True,
top_p=0.95,
temperature=0.7,
repetition_penalty=1.1,
)[0]
print(tokenizer.decode(output))
実行結果:
### 応答:
与えられた文を日本語から英語に翻訳するとこうなります:
"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."<EOD|LLM-jp>
翻訳(英語→日本語)
text = """以下は、タスクを説明する指示です。要求を適切に満たす応答を書きなさい。
### 指示:
以下の文章を英語から日本語に翻訳してください。
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.
### 応答:
"""
tokenized_input = tokenizer.encode(text, add_special_tokens=False, return_tensors="pt").to(model.device)
with torch.no_grad():
output = model.generate(
tokenized_input,
max_new_tokens=512,
do_sample=True,
top_p=0.95,
temperature=0.7,
repetition_penalty=1.1,
)[0]
print(tokenizer.decode(output))
実行結果:
### 応答:
以下、原文の英訳と日本語訳です。
「富士山は日本一高い山である。
富士市と静岡市の間に位置し、標高は3776メートルである。
日本では有名な活火山であり、世界中が知っているシンボル的存在である」<EOD|LLM-jp>
まとめ
最後までご覧いただきありがとうございました。