0
0

More than 1 year has passed since last update.

Stockmarkのgpt-neox-japanese-1.4bをDatabricksで動かしてみる

Last updated at Posted at 2023-08-08

しばらくLLMを触っていなかったのでLLM欲を抑えられませんでした。

こちらを見て試してみたくなりました。本当に、日常的にLLMが発表される世界になっていますね。

当社はビジネスにおける情報収集・分析をサポートするサービスを運営しており、そのために最新のWebデータの収集を日々行なっております。今回の事前学習では、一般にLLMの事前学習によく使われるCommon Crawl由来のデータだけでなく、当社が所有している独自のWebデータ(2023年6月まで)も含めて事前学習を行うことで、最近の話題にも詳しいモデルを開発しました。具体的には、事前学習に用いたデータセットはCC100の日本語サブセット、Wikipediaの日本語版、当社独自の日本語Webデータから構成されています。コーパス全体でのデータ量は約200億トークンで、そのうち当社独自のWebデータは約90億トークンほどです。モデルのアーキテクチャの詳細などは以下をご覧ください。

クラスターはg5.8xlarge(128GB, 1GPU)のクラスターを使います。
Screenshot 2023-08-09 at 8.20.21.png

こちらのサンプルを動かします。

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer

# Use torch.bfloat16 for A100 GPU and torch.flaot16 for the older generation GPUs
torch_dtype = torch.bfloat16 if torch.cuda.is_available() and hasattr(torch.cuda, "is_bf16_supported") and torch.cuda.is_bf16_supported() else torch.float16

model = AutoModelForCausalLM.from_pretrained("stockmark/gpt-neox-japanese-1.4b", device_map="auto", torch_dtype=torch_dtype)
tokenizer = AutoTokenizer.from_pretrained("stockmark/gpt-neox-japanese-1.4b")

inputs = tokenizer("自然言語処理は", return_tensors="pt").to(model.device)
with torch.no_grad():
    tokens = model.generate(
        **inputs,
        max_new_tokens=128,
        repetition_penalty=1.1
    )
    
output = tokenizer.decode(tokens[0], skip_special_tokens=True)
print(output)

自然言語処理は、人工知能(AI)や機械学習と密接な関係があります。例えば、Google翻訳の精度は年々向上しており、2017年11月には日本語を含む20カ国語に対応しました。また、Amazonの「Alexa」も音声による操作が可能になり、2018年には対応言語を50以上に増やす予定です。このように、機械が人間の言葉を理解する技術は日々進歩しています。しかし、その反面、人間が言葉の意味を理解できない場面も増えてきています。例えば、「Aという単語の意味はBだ」と理解していても、それが正しいとは限りません。「Aという単語の意味はCである」と説明されても、それは必ずしも正解ではないのです。このような問題を解決するために生まれたのが、自然言語処理

すごいですね。

関数化して色々試します。

def generate_text(input_text):
  inputs = tokenizer(input_text, return_tensors="pt").to(model.device)
  with torch.no_grad():
    tokens = model.generate(
        **inputs,
        max_new_tokens=128,
        repetition_penalty=1.1
    )
    
  output = tokenizer.decode(tokens[0], skip_special_tokens=True)
  return output
print(generate_text("Databricksとは"))

若干微妙ですがDatabricksも理解しているようです。

Databricksとは、データレイクは、データを収集・分析するためのプラットフォームです。
「データレイク」と呼ばれることもあります。
データウェアハウスやデータ分析基盤などとも呼ばれます。
データの保存場所であるストレージを分散して配置し、複数のサーバーに格納されたデータを統合することで、高速な検索とアクセスを可能にします。
また、蓄積したデータは、BIツールで可視化したり、機械学習に活用することができま

print(generate_text("MLflowとは"))

Googleでは提供していないですし、途中からPythonの基本に行ってしまっていますが機械学習の自動化ツールというところは合っています。

MLflowとは、Googleが提供している機械学習の自動化ツールです。
「Python」はプログラミング言語の一つで、「AI」「データサイエンス」といった分野でも活用されています。
また、Webブラウザ上で動作するアプリケーションの開発やデータ分析など、幅広い用途で使われています。
今回は、そんな「Python」について、基本から学習方法まで詳しく解説します。
まずは、Pythonの基本を学びましょう。
Pythonには、大きく分けて3つの特徴があります。
1つ目は、シンプルで習得しやすいことです。
2つ目に、さまざまな分野で活用できる汎用性が高いことです。
3つ目は、他の言語に比べて少ないコード量で開発できることです。
ここからは、それぞれの特徴について詳しく解説していきます。
Pythonは、

時間見つけて色々試してみます。しかし、1.4bという軽量なモデル(Dollyは12b)でもこれだけのパフォーマンスが出るようになるとは、技術の進歩が恐ろしい(そして、楽しい)です。

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

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

Databricks無料トライアル

Databricks無料トライアル

0
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
0
0