概要
大規模言語モデル (LLM) は現在、機械翻訳、チャット ボット、テキスト要約、感情分析などのさまざまなアプリケーションで広く使用されており、自然言語処理 (NLP) の分野で進歩を遂げています。 ただし、これらの LLM を実際に使用して展開および管理することは困難であり、LLMOps の出番です。LLMOps とは、運用環境で LLM を開発、展開、および管理するために使用される一連のプラクティス、ツール、およびプロセスを指します。
MLflow は、実験を追跡し、コードをパッケージ化し、モデルを運用環境にデプロイするための一連のツールを提供するオープンソース プラットフォームです。 MLflow の一元化されたモデル レジストリにより、モデル バージョンの管理が簡素化され、チーム メンバーとの簡単な共有と共同アクセスが可能になり、データ サイエンティストや機械学習エンジニアがワークフローを合理化し、生産性を向上させるための一般的な選択肢となっています。
学習目標
- 実稼働環境での LLM の展開と管理に伴う課題を理解します。
- MLflow を使用して、LLMOps を実装することにより、本番環境に大規模言語モデルをデプロイする際の課題を解決する方法を学びます。
- Hugging Face トランスフォーマー、OpenAI、Lang Chain などの一般的な大規模言語モデル ライブラリのサポートを調べてください。
- 実際の例を使用して、LLMOps に MLflow を使用する方法を学びます。
この記事は、の一部として公開されました データサイエンスブログ。
本番環境で LLM を展開および管理する際の課題
次の要因により、実稼働環境での LLM の管理と展開が困難になります。
- 資源管理: LLM が適切に機能するには、GPU、RAM、CPU などの多くのリソースが必要です。 これらのリソースは高価で、管理が難しい場合があります。
- モデルのパフォーマンス: LLM は入力データの変化に敏感であり、そのパフォーマンスはデータ分布によって異なります。 実稼働環境でモデルの優れたパフォーマンスを確保することは、困難な場合があります。
- モデルのバージョン管理: 特にモデルの複数のバージョンを同時に管理する必要がある場合、LLM の更新は困難な場合があります。 モデルのバージョンを追跡し、それらが正しくデプロイされていることを確認するには、時間がかかる場合があります。
- インフラ: LLM を展開するためのインフラストラクチャの構成は、特に複数のモデルを同時に管理する必要がある場合に困難な場合があります。
LLMOps に MLflow を使用するには?
MLflow は、機械学習のライフサイクルを管理するためのオープンソース プラットフォームです。 実験の管理、コードのパッケージ化、モデルのデプロイのためのツールと API のセットを提供します。 次の手順に従って、MLflow を使用して、実稼働環境で LLM をデプロイおよび管理できます。
- MLflow プロジェクトを作成します。 MLflow プロジェクトは、機械学習アプリケーションのパッケージ バージョンです。 LLM の実行に必要な依存関係、コード、構成を定義することで、MLflow プロジェクトを作成できます。
- LLM をトレーニングしてログに記録します。 TensorFlow、PyTorch、または Keras を使用して LLM をトレーニングできます。 モデルをトレーニングしたら、MLflow API を使用してモデル アーティファクトを MLflow に記録できます。事前にトレーニングされたモデルを使用している場合は、トレーニング ステップをスキップできます。
- LLM をパッケージ化します。 モデル アーティファクトをログに記録したら、MLflow コマンドを使用してそれらをパッケージ化できます。 MLflow は、LLM を実行するために必要なモデル アーティファクト、依存関係、および構成を含む Python パッケージを作成できます。
- LLM をデプロイします。 Kubernetes、Docker、または AWS Lambda を使用して LLM をデプロイできます。 MLflow API を使用して、LLM を読み込み、予測を実行できます。
MLflow での抱きしめ顔トランスフォーマーのサポート
これは、自然言語処理モデルを構築するための人気のあるオープンソース ライブラリです。 これらのモデルは、MLflow の組み込みサポートにより、運用環境で簡単にデプロイおよび管理できます。MLflow で Hugging Face トランスフォーマーを使用するには、次の手順に従います。
- MLflow とトランスフォーマーをインストールします。 トランスフォーマーと MLflow のインストールは、Pip を使用して実行できます。
!pip install transformers
!pip install mlflow
- LLM を定義します。 次の Python コードに示すように、トランスフォーマー ライブラリを使用して LLM を定義できます。
import transformers
import mlflow chat_pipeline = transformers.pipeline(model="microsoft/DialoGPT-medium")
- LLM をログに記録します。 LLM を MLflow に記録するには、以下の Python コード スニペットを使用します。
with mlflow.start_run(): model_info = mlflow.transformers.log_model( transformers_model=chat_pipeline, artifact_path="chatbot", input_example="Hi there!" )
- LLM をロードして、そこから予測を行います。
# Load as interactive pyfunc
chatbot = mlflow.pyfunc.load_model(model_info.model_uri)
#make predictions
chatbot.predict("What is the best way to get to Antarctica?")
>>> 'I think you can get there by boat'
chatbot.predict("What kind of boat should I use?")
>>> 'A boat that can go to Antarctica.'
MLflow でのオープン AI サポート
Open AI は、LLM を構築するためのもう XNUMX つの一般的なプラットフォームです。 MLflow は Open AI モデルのサポートを提供し、運用環境での Open AI モデルのデプロイと管理を容易にします。 MLflow で Open AI モデルを使用する手順は次のとおりです。
- MLflow と Open AI をインストールします。 Pip を使用して Open AI と MLflow をインストールできます。
!pip install openai
!pip install mlflow
- LLM を定義します。 次のコード スニペットに示すように、Open AI API を使用して LLM を定義できます。
from typing import List
import openai
import mlflow # Define a functional model with type annotations def chat_completion(inputs: List[str]) -> List[str]: # Model signature is automatically constructed from # type annotations. The signature for this model # would look like this: # ---------- # signature: # inputs: [{"type": "string"}] # outputs: [{"type": "string"}] # ---------- outputs = [] for input in inputs: completion = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=[{"role": "user", "content": "<prompt>"}] ) outputs.append(completion.choices[0].message.content) return outputs
- LLM をログに記録します。 次のコード スニペットを使用して、LLM を MLflow に記録できます。
# Log the model
mlflow.pyfunc.log_model( artifact_path="model", python_model=chat_completion, pip_requirements=["openai"],
)
MLflow でのラング チェーンのサポート
Lang Chain は、モジュラー アプローチを使用して LLM を構築するためのプラットフォームです。 MLflow は、ラング チェーン モデルのサポートを提供し、運用環境でのラング チェーン モデルのデプロイと管理を容易にします。 MLflow でラング チェーン モデルを使用するには、次の手順に従います。
- MLflow と Lang Chain をインストールします。 pip を使用して MLflow と Lang Chain をインストールできます。
!pip install langchain
!pip install mlflow
- LLM を定義します。 次のコード スニペットは、Lang Chain API を使用して LLM を定義する方法を示しています。
from langchain import PromptTemplate, HuggingFaceHub, LLMChain template = """Translate everything you see after this into French: {input}""" prompt = PromptTemplate(template=template, input_variables=["input"]) llm_chain = LLMChain( prompt=prompt, llm=HuggingFaceHub( repo_id="google/flan-t5-small", model_kwargs={"temperature":0, "max_length":64} ),
)
- LLM をログに記録します。 次のコード スニペットを使用して、LLM を MLflow に記録できます。
mlflow.langchain.log_model( lc_model=llm_chain, artifact_path="model", registered_model_name="english-to-french-chain-gpt-3.5-turbo-1"
)
- モデルをロードします。 以下のコードを使用して、LLM をロードできます。
#Load the LangChain model import mlflow.pyfunc english_to_french_udf = mlflow.pyfunc.spark_udf( spark=spark, model_uri="models:/english-to-french-chain-gpt-3.5-turbo-1/1", result_type="string"
)
english_df = spark.createDataFrame([("What is MLflow?",)], ["english_text"]) french_translated_df = english_df.withColumn( "french_text", english_to_french_udf("english_text")
)
まとめ
リソース管理、モデルのパフォーマンス、モデルのバージョン管理、およびインフラストラクチャの問題により、実稼働環境での LLM の展開と管理は困難な場合があります。 LLM は、モデルのライフサイクルを管理するための MLflow のツールと API を使用して、運用環境で簡単にデプロイおよび管理できます。 このブログでは、MLflow を使用して実稼働環境で LLM をデプロイおよび管理する方法と、Hugging Face トランスフォーマー、Open AI、Lang Chain モデルのサポートについて説明しました。 MLflow を使用すると、機械学習ライフサイクルにおけるデータ サイエンティスト、エンジニア、およびその他の利害関係者間のコラボレーションを改善できます。
重要なポイントの一部は次のとおりです。
- MLflow は、実稼働環境で LLM をデプロイおよび管理します。
- Hugging Face トランスフォーマー、Open AI、Lang Chain モデルが MLflow でサポートされています。
- リソース管理、モデルのパフォーマンス、モデルのバージョン管理、およびインフラストラクチャの問題は、実稼働環境で LLM をデプロイおよび管理するときに困難になる可能性がありますが、MLflow はこれらの課題を克服するのに役立つ一連のツールと API を提供します。
- MLflow は、実験の追跡、モデルのバージョン管理、およびモデルのパッケージ化とデプロイのための一元化された場所を提供します。
- MLflow は、既存のワークフローと簡単に使用できるように統合されています。
この記事に示されているメディアは Analytics Vidhya が所有するものではなく、著者の裁量で使用されています。
関連記事
- SEO を活用したコンテンツと PR 配信。 今日増幅されます。
- プラトアイストリーム。 Web3 データ インテリジェンス。 知識増幅。 こちらからアクセスしてください。
- 未来を鋳造する w エイドリエン・アシュリー。 こちらからアクセスしてください。
- PREIPO® を使用して PRE-IPO 企業の株式を売買します。 こちらからアクセスしてください。
- 情報源: https://www.analyticsvidhya.com/blog/2023/05/deploying-large-language-models-in-production-llmops-with-mlflow/