見出し画像

【Petals】パラメーター100B超えのLLMを自宅のPCで動かす方法

皆さん、PetalsというLLMプラットフォームをご存知ですか?

なんと、大規模言語モデルが、Google Colabやご自宅のGPUで動かせるようになるんです。

え、、、ご存知ない!?まさかぁ(茶番)

扱えるモデルは、Llama2(70B)やFalcon(180B)などのパラメータ数が特級クラスのものばかり。誰でも、Google Colabさえあればこれらのモデルを動かせるんですよ!

やばくないですか!?やばいですよね!(脳死)

ということで、今回の記事ではPetalsというLLMプラットフォームの概要、導入、実際に使ってみた感想についてまとめています。

この記事を最後まで読むと、Petalsを理解できるようになります。

ぜひ最後までご覧ください!

Petalsの概要

Petalsは、家庭用のGPUやGoogle Colabを使用して、大規模な言語モデルを実行するためのプラットフォームです。動かせるモデルは、Llama 2(70B)、Falcon(180B)、BLOOM(176B)など、化け物クラスのパラメータ数を誇るLLMばかりです。

そんなPetalsの特徴は以下の4点です。

分散型パイプライン:Petalsは、高速なニューラルネットワークの推論のための分散型パイプラインとして動作します。モデルはいくつかのブロックに分割され、それぞれが異なるサーバー上でホストされます。

透明性:ブロックの各入力と出力はネットワーク上で送信されるため、モデルのレイヤー間にタスク固有のアダプタを挿入することが可能です。これにより、サーバー上の事前学習済みモデルを変更することなく、軽量な微調整が可能となります。

実用性:Petalsのインターフェースは、Transformersライブラリに非常に似ており、複雑なロジックなどは表示されず、分かりやすいUIになっています。

ベンチマーク:Petalsは、同様のプラットフォームであるオフロードとの性能を比較して、レイテンシーが3〜25倍速いことが比較実験で示されています。

分散型パイプラインについてもう少し詳しく説明すると、Petalsで大規模なモデルを動かせるのは、、BitTorrentのようなP2Pの通信手法をとっているからです。

P2Pを使うと、容量の大きなファイルを大勢のユーザーで分散し共有することができます。BitTorrentの技術は、高速で効率的なデータ転送を可能にするため、Petalsプラットフォームは大規模なモデルもスムーズに動作させることができるということですね。

さらにPetalsは、ファインチューニングやサンプリング方法も使用できるため、多様な用途に対応しています。

ここまでPetalsの概要をご説明してきましたが、ここからは実際に使いながら機能を紹介していきます。

なお、Llama2について詳しく知りたい方は、下記の記事を合わせてご確認ください。
【Llama 2】オープンソース版ChatGPTの使い方〜ChatGPTとの比較まで

Petalsの料金体系

Petalsはオープンソースプロジェクトであり、GitHubから無料でダウンロードして使用することができます。

ただし、Google Colab Pro / Pro + を使う場合、月額1,179円 / 5,767円がかかります。

それでは、気になるPetalsの導入方法を見ていきましょう。

Petalsの導入方法

以下のGoogle Colabファイルにアクセスします。

Petals - Getting started with Llama 2 and Stable Beluga 2 (GPU Colab)

画面上部のメニューバーからRuntime →Change runtime type をクリックします。

GPUを選択します。今回は、共有したColabファイルの初期設定のまま、T4 GPUを使いました。

以下を実行しPetalsのパッケージをインストールします。

%pip install git+https://github.com/bigscience-workshop/petals

実行すると以下のような画面になります。

次に、以下を実行し、StableBeluga2というモデルをロードします。

import torch

from transformers import AutoTokenizer

from petals import AutoDistributedModelForCausalLM

model_name = "petals-team/StableBeluga2"

# You could also use "meta-llama/Llama-2-70b-chat-hf" or any other supported model from 🤗 Model Hub

tokenizer = AutoTokenizer.from_pretrained(model_name, use_fast=False, add_bos_token=False)

model = AutoDistributedModelForCausalLM.from_pretrained(model_name)

model = model.cuda()

このようになったら準備完了です。

ちなみに、"meta-llama/Llama-2-70b-chat-hf"モデルを使う場合は、Metaにアクセストークンをリクエストする必要がありますので、以下の手順でリクエストを送信してください。

まずは、こちらのURLにアクセスします。

meta-llama/Llama-2-70b-chat-hf

下にスクロールするとこんな画面があるので、「I agree…」にチェックを入れて、Submitを押しましょう

以下のように、リクエストに成功と出たらOKです。

次にHugging Faceのアクセストークンを取得します。

Hugging Faceにログインした状態で、以下のページにアクセスします。

settings/tokens

New tokenをクリックして生成します。

終わったら、Google Colabで、以下のコマンドを実行。

!huggingface-cli login --token your-access-token

Login successfulと出たらOKです!

Llama-2-70b-chat-hf モデルを選択して実行する。

import torch

from transformers import AutoTokenizer

from petals import AutoDistributedModelForCausalLM

model_name = "meta-llama/Llama-2-70b-chat-hf"

tokenizer = AutoTokenizer.from_pretrained(model_name, use_fast=False, add_bos_token=False)

model = AutoDistributedModelForCausalLM.from_pretrained(model_name)

model = model.cuda()

以下のようになっていたらOKです!

Petalsを実際に使ってみた

これ以降は、以下の記事からご確認ください。

他の記事もご覧になりたい方は、こちらをご覧ください。

この記事が気に入ったらサポートをしてみませんか?