1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

rinnaのjapanese-gpt-neox-3.6bをDatabricksで動かしてみる

Posted at

「LLM動かしました」だけ投稿するのもあれですが、こちらと同じノリで。

Hugging Faceに公開されているものであれば、ほぼ同じコードで動かせること、MLflowによって同じようにモデルを管理できることが伝われば幸いです。

ライブラリのインストールから。

%pip install mlflow==2.3.1
%pip install sentencepiece
Python
dbutils.library.restartPython()
Python
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM

tokenizer = AutoTokenizer.from_pretrained("rinna/japanese-gpt-neox-3.6b", use_fast=False)
model = AutoModelForCausalLM.from_pretrained("rinna/japanese-gpt-neox-3.6b")

if torch.cuda.is_available():
    model = model.to("cuda")

text = "西田幾多郎は、"
token_ids = tokenizer.encode(text, add_special_tokens=False, return_tensors="pt")

with torch.no_grad():
    output_ids = model.generate(
        token_ids.to(model.device),
        max_new_tokens=100,
        min_new_tokens=100,
        do_sample=True,
        temperature=0.8,
        pad_token_id=tokenizer.pad_token_id,
        bos_token_id=tokenizer.bos_token_id,
        eos_token_id=tokenizer.eos_token_id
    )

output = tokenizer.decode(output_ids.tolist()[0])
print(output)

こちらと照らし合わせると合っている感じです。

西田幾多郎は、自らが「意識」の探求者であることを表明しています。そして、「意識」の探究は、対象に還元できない超越的な「自己」の探究につながっていくのだ、とも述べています。 僕は、一個の人間の「自己」には、様々な面があると思っています。 それは、「この世界」で生きる「自己」を超越したもの、というだけではありません。 人間には、無数の「自己」が存在しているのであり、「自己

前回同様モデルをロギングします。

Python
import mlflow
import transformers

# Define the components of the model in a dictionary
transformers_model = {"model": model, "tokenizer": tokenizer}
task = "text-generation"

# Log the model components
with mlflow.start_run():
    model_info = mlflow.transformers.log_model(
        transformers_model=transformers_model,
        artifact_path="text_generation",
        task=task,
    )

モデルカードもバッチリ。
Screenshot 2023-05-18 at 20.03.57.png
Screenshot 2023-05-18 at 20.04.05.png

モデルをロードして推論。

Python
# Load the components as a pipeline
loaded_pipeline = mlflow.transformers.load_model(
    model_info.model_uri, return_type="pipeline"
)

loaded_pipeline(["AIによって私達の暮らしは、"])

「しかし、」の後が気になります。

Out[4]: [[{'generated_text': 'AIによって私達の暮らしは、より便利で快適なものになるでしょう。 しかし、'}]]
Python
loaded_pipeline(["日本の首都は"])
Out[6]: [[{'generated_text': '日本の首都は東京ですが、その東京の人口が約1300万人です。 それ'}]]
Python
loaded_pipeline(["日本の最北端は"])
Out[7]: [[{'generated_text': '日本の最北端は、北海道の宗谷岬です。 宗谷岬は、日本最'}]]

何も調整しなくともいい感じですね。そして、いい加減ファインチューニング勉強しよう。

Databricksクイックスタートガイド

Databricksクイックスタートガイド

Databricks無料トライアル

Databricks無料トライアル

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?