コンテンツへスキップ ナビゲーションに移動
つくもちブログ 〜Python&AIまとめ〜
  • 運営者情報
  • お問い合わせ
  • YouTube動画

【日本語LLM】Google ColabでLLM-jp-13Bを実装する

2023年10月21日 最終更新日時 : 2023年10月21日 tt-tsukumochi
  1. Topページ
  2. ChatGPT
  3. 【日本語LLM】Google ColabでLLM-jp-13Bを実装する

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

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

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

目次
  • 1. LLM-jp-13Bの概要
  • 1.1. LLM-jp-13Bとは
  • 1.2. LLM-jp-13Bの性能
  • 2. llm-jp-13b-instruct-full-jaster-v1.0の実装
  • 2.1. 質問①:自然言語処理とは何か
  • 2.2. 質問②:日本で一番高い山はどこか?
  • 2.3. 質問③:富士山について詳しく解説して下さい
  • 3. llm-jp-13b-v1.0の実装
  • 3.1. 富士山について詳しく述べる
  • 4. まとめ

LLM-jp-13Bの概要

LLM-jp-13Bとは

LLM-jp-13Bは、10/20に発表されたNIIが主導するLLM-jpの一環として開発された大規模な言語モデルです。500名以上の自然言語処理及び計算機システムの研究者が集まり、ハイブリッド会議やオンライン会議、Slack等を通じて情報共有と共同研究開発を行っています。LLM-jpの目的は、オープンかつ日本語に強いLLMの構築とそれに関連する研究開発の推進、定期的な情報交換、組織横断的な連携の促進、そして成果物の公開です。

LLM-jp-13Bは、計算資源としてデータ活用社会創成プラットフォームmdxの12ノード(A100 96枚)を利用し、モデル構築にはMicrosoftのDeepSpeed技術が採用されています。学習とログの保存にはWeights & Biasesを用いており、モデルのパラメータ数は130億個にも及びます。

学習データ量は約3000億トークンで、日本語と英語のウェブコーパス、Wikipedia、プログラムコード等を含んでいます。これらのデータは、トークナイザーやウェブコーパスのフィルタリングツールを用いて整備されました。モデルのチューニングには、日本語と英語のインストラクションデータおよび和訳データを用い、複数の評価データに対して横断的な評価を行うフレームワークが構築されています。

しかし、LLM-jp-13Bはまだ研究開発の初期段階にあり、人間の意図に沿った出力を行うようにチューニングされていないため、そのまま実用的なサービスに供することを想定していません。安全性や倫理的な側面からの検討が更に必要です。

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

詳細:https://www.nii.ac.jp/news/release/2023/1020.html
モデル:https://huggingface.co/llm-jp

LLM-jp-13Bの性能

https://wandb.ai/llm-jp-eval/test-eval/reports/llm-jp—Vmlldzo1NzE0NjA1?accessToken=s09hm7xrqg43ls8i25am6t0r7iwjpninwzeelqqgbx53zivlm9s04ixfpv3xgiwm

llm-jp-13b-instruct-full-jaster-v1.0の実装

まずはインストラクションチューニングされたモデルから試していきます。

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

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

Open In Colab

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

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

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

!pip install transformers accelerate

質問①:自然言語処理とは何か

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

import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained(
    "llm-jp/llm-jp-13b-instruct-full-jaster-v1.0"
    )
model = AutoModelForCausalLM.from_pretrained(
    "llm-jp/llm-jp-13b-instruct-full-jaster-v1.0",
    device_map="auto",
    torch_dtype=torch.float16
    )

text = "自然言語処理とは何か"
text = 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=100,
        do_sample=True,
        top_p=0.95,
        temperature=0.7,
    )[0]
print(tokenizer.decode(output))

実行結果:

自然言語処理とは何か### 回答: 自然言語処理とは、コンピュータに人間が話す言葉を理解させること

質問②:日本で一番高い山はどこか?

text = "日本で一番高い山はどこか?"
text = 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=100,
        do_sample=True,
        top_p=0.95,
        temperature=0.7,
    )[0]
print(tokenizer.decode(output))

実行結果:

日本で一番高い山はどこか?### 回答:富士山

質問③:富士山について詳しく解説して下さい

text = "富士山について詳しく解説して下さい"
text = 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=100,
        do_sample=True,
        top_p=0.95,
        temperature=0.7,
    )[0]
print(tokenizer.decode(output))

実行結果:

富士山について詳しく解説して下さい### 回答: 山梨県と静岡県の県境にそびえる標高3776mの山

llm-jp-13b-v1.0の実装

インストラクションチューニングされていないモデルも試してみます。

富士山について詳しく述べる

import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained(
    "llm-jp/llm-jp-13b-v1.0"
    )
model = AutoModelForCausalLM.from_pretrained(
    "llm-jp/llm-jp-13b-v1.0",
    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=1500,
        do_sample=True,
        top_p=0.95,
        temperature=0.7,
    )[0]
print(tokenizer.decode(output))

実行結果:

富士山について詳しく述べるが、その前に、富士山とは何かを説明しておこう。 
富士山は静岡県、山梨県、神奈川県の3県にまたがり、標高3776mの独立峰である。 
富士五湖の1つである河口湖から望む姿は、日本の象徴として知られる。 
日本国内の名山の中でも、最も美しい山との呼び声も高い。 
日本だけでなく世界的にも有名な山で、富士山は世界遺産に登録されている。 
富士山頂には、日本一高い標高を誇る神社の奥宮がある。 その名も「富士山本宮浅間大社」。 
この神社は、浅間大神を主祭神としており、浅間大神は富士山の神様である。 
富士山の山頂に浅間大社があるということは、富士山は浅間大社の神域であると言える。 
富士山は、浅間大社の神域であると同時に、信仰の対象でもあるのだ。 
浅間大社は、富士山の頂上にある神社で、富士山の神である浅間大神を祀っている。 
浅間大社は、富士山が噴火したときに、その噴煙で社殿が焼けてしまった。 
そこで、浅間大社の神職たちが、山頂にあった浅間大神の祠を、今の場所に移し祀った。 
富士山の神は、富士山の噴火を鎮めることを目的としている。 
そのため、浅間大社は、噴火を鎮めるために建てられた神社なのだ。 
富士山は、噴火を鎮めるために浅間大社が建てられた神社である。 
このような神社は他にはなく、富士山が特別な場所であることがわかる。 
富士山は、浅間大社の神域であり、信仰の対象である。 
浅間大社が富士山の噴火を鎮めるために建てられたことから、富士山は噴火を鎮める特別な場所であるといえるだろう。
富士山の御祭神は、火の神である火之神櫛真智命(ひのかみくしまちのみこと)様で、元々は富士山の頂上にあった浅間大神を祀っています。
浅間大神は、富士山の神様で、古くからの山岳信仰の対象であり、富士山が噴火する度に、浅間大社も大打撃を受けていた為、浅間大神を山麓にある富士山本宮浅間大社にお祀りし、その御神霊を富士山の噴火が鎮まるまで、お預かりしているということです。
富士山の麓にある浅間大社の参道には、多くのお土産物屋さんや飲食店が立ち並び、富士登山の時には、ここでお土産や飲食を楽しみながら、ゆっくりと登山をするのも良いでしょう。
(以下ループのため省略)

とても詳しく解説してもらうことができました。

まとめ

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

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

よろしければおすすめ書籍もご覧ください。 ※これ以降は広告です

関連

関連記事

【日本語LLM】約50,000文字の日本語文章を一度に処理できるCyberAgentLM2-7B-Chatのモデルを実装する
 2023年11月2日
【日本語LLM】Google Colabでjapanese-stablelm-instruct-ja_vocab-beta-7bを実装する
 2023年11月2日
【LLM】DePlotでグラフからテキストに変換する【DePlot】
 2023年6月8日
chatgpt-prompt-engineering-for-developersで学ぶプロンプトエンジニアリング【ChatGPT】
 2023年6月8日
【LangChainまとめ】LangChainの概要【LLM】
 2023年5月1日
「ChatGPT」に対抗? HuggingChatの概要と事例まとめ
 2023年4月28日
【GPT-4】今さら聞けない!自律AIエージェント入門【ChatGPT】
 2023年4月22日
【LLM】Google ColabでStableLMを実装する
 2023年4月20日
【LLM】Google ColabでDolly 2.0を実装する
 2023年4月19日
【Huggingface Transformers】日本語↔英語の翻訳を実装する
 2023年4月14日
カテゴリー
ChatGPT、NLP、transformers
タグ
ChatGPTLLMllm-jp-13btransformers自然言語処理
前の記事
【Stable Diffusion】Google Colabで SDXLの画像生成を試す【画像生成】
2023年10月19日
次の記事
【3D】Google colabでDreamGaussianによる3Dモデル生成を実装する
2023年10月22日
  • 【動画生成】画像が動き出す!magic-animate入門
  • 【Stable Diffusion】Google Colabで SDXLの画像生成を高速化(1秒以下)できるLCMを試す【画像生成】
  • 【音声生成】Google Colab で OpenAI API の Text-to-Speech による音声生成を試す(6種類聞き比べ)
  • 【音声認識2023】Google Colab で「Whisper large-v3」を使ってYouTube動画を文字起こしする(large-v2との精度比較あり)
  • 【画像生成】Google Colab で DALL-E 3 のAPIでテキストから画像生成を試す(Stable Diffusionとの比較あり)

カテゴリ

  • 3D
  • ChatGPT
  • E資格
  • GiNZA
  • G検定
  • image2text
  • NLP
  • PDF
  • Python
  • transformers
  • YouTube
  • セグメンテーション
  • ノイズ除去
  • 動画生成
  • 動画編集
  • 時系列分析
  • 物体検出
  • 物体追跡
  • 画像修復
  • 画像分類
  • 画像生成
  • 資格
  • 超解像
  • 音声認識
  • 音楽生成
  • 顔

ChatGPT Darts Detic E資格 GAN GiNZA gpt-1b GPT-4 G検定 Image Inpainting LLM Matting motpy OpenAI API PDF Python Segment Anything speech2text Stable Diffusion transformers whisper YOLOR YOLOv5 YOLOv6 YOLOv7 yolov8 YOLOX YouTube セグメンテーション テキスト生成 分散表現 動画編集 時系列分析 物体検出 画像修復 画像分類 画像生成 自然言語処理 要約 試験 資格 質問応答 超解像 音声認識 音楽生成

月別アーカイブ

  • 2023年12月
  • 2023年11月
  • 2023年10月
  • 2023年7月
  • 2023年6月
  • 2023年5月
  • 2023年4月
  • 2023年3月
  • 2023年2月
  • 2023年1月
  • 2022年12月
  • 2022年11月
  • 2022年10月
  • 2022年9月
  • 2022年8月
  • 2022年7月
  • 2022年6月
  • 2022年5月
  • 2022年4月
  • 2022年3月
  • 2022年2月
  • 2022年1月


最近の投稿

Python
【動画生成】画像が動き出す!magic-animate入門新着!!
2023年12月9日
Python
【Stable Diffusion】Google Colabで SDXLの画像生成を高速化(1秒以下)できるLCMを試す【画像生成】
2023年11月12日
Python
【音声生成】Google Colab で OpenAI API の Text-to-Speech による音声生成を試す(6種類聞き比べ)
2023年11月7日
Python
【音声認識2023】Google Colab で「Whisper large-v3」を使ってYouTube動画を文字起こしする(large-v2との精度比較あり)
2023年11月7日
Python
【画像生成】Google Colab で DALL-E 3 のAPIでテキストから画像生成を試す(Stable Diffusionとの比較あり)
2023年11月7日
G検定
【G検定2024まとめ最新版】要点整理&当日用カンペ
2023年11月3日
ChatGPT
【日本語LLM】約50,000文字の日本語文章を一度に処理できるCyberAgentLM2-7B-Chatのモデルを実装する
2023年11月2日
ChatGPT
【日本語LLM】Google Colabでjapanese-stablelm-instruct-ja_vocab-beta-7bを実装する
2023年11月2日
3D
【3D】Google colabでDreamGaussianによる3Dモデル生成を実装する
2023年10月22日
ChatGPT
【日本語LLM】Google ColabでLLM-jp-13Bを実装する
2023年10月21日

カテゴリー

  • 3D
  • ChatGPT
  • E資格
  • GiNZA
  • G検定
  • image2text
  • NLP
  • PDF
  • Python
  • transformers
  • YouTube
  • セグメンテーション
  • ノイズ除去
  • 動画生成
  • 動画編集
  • 時系列分析
  • 物体検出
  • 物体追跡
  • 画像修復
  • 画像分類
  • 画像生成
  • 資格
  • 超解像
  • 音声認識
  • 音楽生成
  • 顔

アーカイブ

  • 2023年12月
  • 2023年11月
  • 2023年10月
  • 2023年7月
  • 2023年6月
  • 2023年5月
  • 2023年4月
  • 2023年3月
  • 2023年2月
  • 2023年1月
  • 2022年12月
  • 2022年11月
  • 2022年10月
  • 2022年9月
  • 2022年8月
  • 2022年7月
  • 2022年6月
  • 2022年5月
  • 2022年4月
  • 2022年3月
  • 2022年2月
  • 2022年1月
  • 免責事項
  • プライバシーポリシー
  • お問い合わせ
  • 運営者情報
  • ギャラリー
  • Twitter
  • YouTube

Copyright © つくもちブログ 〜Python&AIまとめ〜 All Rights Reserved.

  • 運営者情報
  • お問い合わせ
  • YouTube動画

最近の投稿

【動画生成】画像が動き出す!magic-animate入門
2023年12月9日
【Stable Diffusion】Google Colabで SDXLの画像生成を高速化(1秒以下)できるLCMを試す【画像生成】
2023年11月12日
【音声生成】Google Colab で OpenAI API の Text-to-Speech による音声生成を試す(6種類聞き比べ)
2023年11月7日
【音声認識2023】Google Colab で「Whisper large-v3」を使ってYouTube動画を文字起こしする(large-v2との精度比較あり)
2023年11月7日
【画像生成】Google Colab で DALL-E 3 のAPIでテキストから画像生成を試す(Stable Diffusionとの比較あり)
2023年11月7日
【G検定2024まとめ最新版】要点整理&当日用カンペ
2023年11月3日
【日本語LLM】約50,000文字の日本語文章を一度に処理できるCyberAgentLM2-7B-Chatのモデルを実装する
2023年11月2日
【日本語LLM】Google Colabでjapanese-stablelm-instruct-ja_vocab-beta-7bを実装する
2023年11月2日
【3D】Google colabでDreamGaussianによる3Dモデル生成を実装する
2023年10月22日
【日本語LLM】Google ColabでLLM-jp-13Bを実装する
2023年10月21日
  • MENU
  • HOME
  • お問い合わせ
PAGE TOP