個人的にもこのような流れにドキドキしています。色々なLLMを活用できる幸せ。
一番小さいものでトライします。クラスターのランタイムは13.0 ML、インスタンスはg5.4xlarge(64GB, 1GPU)です。
例によって、MLflowで管理するのでtransformesをサポートしているバージョン2.3以降をインストールします。
%pip install mlflow==2.3.1
Python
dbutils.library.restartPython()
まずはサンプル通りに。
Python
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained("cyberagent/open-calm-small", device_map="auto", torch_dtype=torch.float16)
tokenizer = AutoTokenizer.from_pretrained("cyberagent/open-calm-small")
inputs = tokenizer("AIによって私達の暮らしは、", return_tensors="pt").to(model.device)
with torch.no_grad():
tokens = model.generate(
**inputs,
max_new_tokens=64,
do_sample=True,
temperature=0.7,
pad_token_id=tokenizer.pad_token_id,
)
output = tokenizer.decode(tokens[0], skip_special_tokens=True)
print(output)
AIによって私達の暮らしは、あらゆる面で大きく変わっています。
たとえば、車。
私たちが使っている車は、その車そのものの価値を高めます。
でも、
「車そのもの」
という価値が、その車を買い替えることによって、どんどん下がっていきます。
「車」という価値が上がれば上がるほど、車は買い替えることで価値
おおー。
次にMLflowでロギングします。
Python
import mlflow
import transformers
# ディクショナリーでモデルのコンポーネントを定義
transformers_model = {"model": model, "tokenizer": tokenizer}
task = ""
# モデルコンポーネントの記録
with mlflow.start_run():
model_info = mlflow.transformers.log_model(
transformers_model=transformers_model,
artifact_path="text_classifier",
)
モデルをロードして推論を行います。
Python
# パイプラインとしてコンポーネントをロード
loaded_pipeline = mlflow.transformers.load_model(
model_info.model_uri, return_type="pipeline"
)
loaded_pipeline(["AIによって私達の暮らしは、"])
Out[3]: [[{'generated_text': 'AIによって私達の暮らしは、生活者にとって、より便利で、より豊かなものになるはずです。\n'}]]
以前のようにサービングエンドポイントにデプロイすれば、カスタムアプリとしても活用できますね。
いい加減、そろそろファインチューニングやプロンプトエンジニアリングにもどっぷり浸かりたいと思ってます。