メインコンテンツへジャンプ
Engineering blog

MLflow AI GatewayとLlama 2を使ってジェネレーティブAIアプリを構築する

独自のデータでRAG(Retrieval Augmented Generation)を使用して、より高い精度を達成する
Share this post

翻訳:Junichi Maruyama.  -  Original Blog Link

顧客サポートボット、社内ナレッジグラフ、またはQ&Aシステムを構築するために、顧客は多くの場合、事前に訓練されたモデルを独自のデータと一緒に活用するRAG(Retrieval Augmented Generation)アプリケーションを使用します。しかし、安全なクレデンシャル管理と不正使用防止のためのガードレールがないため、お客様はこれらのアプリケーションへのアクセスと開発を民主化することができません。私たちは最近、MLflow AI Gatewayを発表しました。これは拡張性の高いエンタープライズグレードのAPIゲートウェイで、組織がLLMを管理し、実験や生産に利用できるようにします。本日、AI Gatewayを拡張し、RAGアプリケーションをより良くサポートすることを発表できることを嬉しく思います。組織は、プライベートホスティングモデルAPI(Databricks Model Serving経由)、プロプライエタリAPI(OpenAI、Co:here、Anthropic)、そして今回MosaicML経由のオープンモデルAPIのガバナンスを一元化し、安心してRAGアプリケーションを開発・展開できるようになりました。

このブログポストでは、MosaicMLの Starter Tier Inference APIsを通じてホストされ最適化された、テキスト生成用のLlama2-70B-Chat modelとテキスト埋め込み用の Instructor-XLモデルを使って、Databricks Lakehouse AIプラットフォーム上でRAGアプリケーションを構築しデプロイする方法を説明します。ホストされたモデルを使うことで、私たちはすぐに始めることができ、低いスループットで実験するための費用対効果の高い方法を手に入れることができます。

このブログで構築しているRAGアプリケーションは、ガーデニングの質問に答え、植物の手入れ方法を推奨します。

What is RAG?

RAGは、顧客が自身のデータを活用することで、モデルのパフォーマンスを向上させることができる一般的なアーキテクチャである。これは、関連するデータやドキュメントを取得し、LLMのコンテキストとして提供することで実現される。RAGは、最新の情報を維持したり、ドメイン固有の知識にアクセスしたりする必要があるチャットボットやQ&Aシステムで成功を収めている。

AI Gatewayを使用して、モデルAPIを呼び出すためのガードレールを設置する

最近発表されたMLflow AI Gatewayは、組織がRouteと呼ばれるオブジェクトを介して、SaaS LLMを含むモデルAPIのガバナンス、クレデンシャル管理、レート制限を一元化することを可能にします。Routeを配布することで、組織はLLMへのアクセスを民主化すると同時に、ユーザーの行動がシステムを悪用したりダウンさせたりしないようにすることができます。AIゲートウェイはまた、LLMをクエリするための標準インターフェースを提供し、新しい最先端のモデルがリリースされたときに、Routeの背後にあるモデルを簡単にアップグレードできるようにします。

私たちは通常、組織がユースケースごとにRouteを作成し、多くのRouteが同じモデルAPIエンドポイントを指し、それが十分に活用されていることを確認するのを見ます。

このRAGアプリケーションでは、2つのAI Gateway Routesを作成したいと思います。1つは埋め込みモデル用、もう1つはテキスト生成モデル用です。ベンダーロックインを避けるために、将来的にファインチューニングやプライベートホスティングのためにサポートされる経路を持ちたいからです。そのためにMosaicMLの推論APIを使います。これらのAPIは、迅速な実験とトークン・ベースの価格設定のために、最先端のオープンソース・モデルへの迅速で簡単なアクセスを提供します。MosaicMLはテキスト補完にMPT と Llama2 モデル、テキスト埋め込みにInstructorモデルをサポートしています。この例では、2兆個のトークンで学習され、Metaによって対話、安全性、有用性をファインチューニングされたLlama2-70b-Chatと、HKUNLPによって1.2Bパラメータ命令でファインチューニングされた埋め込みモデルのInstructor-XLを使います。

AIゲートウェイのMosaicML推論APIの新しいサポートを使って、Llama2-70B-Chatのルートを簡単に作成できます:

from mlflow.gateway import create_route

mosaicml_api_key = "your key"
create_route(
    "completion",
    "llm/v1/completions",
    {
        "name": "llama2-70b-chat",
        "provider": "mosaicml",
        "mosaicml_config": {
            "mosaicml_api_key": mosaicml_api_key,
        },
    },
)

上記で設定したテキスト補完ルートと同様に、MosaicML Inference APIで利用可能なInstructor-XL用の別のルートを作成することができます。

create_route(
    "embeddings",
    "llm/v1/embeddings",
    {
        "name": "instructor-xl",
        "provider": "mosaicml",
        "mosaicml_config": {
            "mosaicml_api_key": mosaicml_api_key,
        },
    },
)

MosaicMLホストモデルのAPIキーを取得するには、こちらからサインアップしてください。

LangChainを使ってレトリーバーとテキスト生成を組み合わせる

ここで、ドキュメントの類似度をリアルタイムで検索できるように、ドキュメントの埋め込みからベクトル・インデックスを構築する必要があります。LangChainを使い、AI Gateway Routeに埋め込みモデルを指定します:

# Create the vector index
from langchain.embeddings.mlflow_gatewayllms import MLflowAIGatewayEmbeddings
from langchain.vectorstores import Chroma

# Retrieve the AI Gateway Route

mosaicml_embedding_route = MLflowAIGatewayEmbeddings(
  gateway_uri="databricks",
  route="embedding"
)

# load it into Chroma

db = Chroma.from_documents(docs, embedding_function=mosaicml_embedding_route, persist_directory="/tmp/gardening_db")

次に、プロンプト・テンプレートとテキスト生成モデルをつなぎ合わせる必要がある:

from langchain.llms import MLflowAIGateway

# Create a prompt structure for Llama2 Chat (note that if using MPT the prompt structure would differ)

template = """[INST] <<SYS>>
You are an AI assistant, helping gardeners by providing expert gardening answers and advice. 

Use only information provided in the following paragraphs to answer the question at the end. 

Explain your answer with reference to these paragraphs.

If a question does not make any sense, or is not factually coherent, explain why instead of answering something not correct. 

If you don't know the answer to a question, please don't share false information.

<</SYS>>

{context}

{question} [/INST]

"""

prompt = PromptTemplate(input_variables=['context', 'question'], template=template)

# Retrieve the AI Gateway Route

mosaic_completion_route = MLflowAIGateway(
  gateway_uri="databricks",
  route="completion",
  params={ "temperature": 0.1 },
)

# Wrap the prompt and Gateway Route into a chain

retrieval_qa_chain = RetrievalQA.from_chain_type(llm=mosaic_completion_route, chain_type="stuff", retriever=db.as_retriever(), chain_type_kwargs={"prompt": prompt})

RetrievalQAチェーンは、ベクトルデータベースから検索された文書がテキスト要約モデルのコンテキストとなるように、2つのコンポーネントを連鎖させる:

query = "Why is my Fiddle Fig tree dropping its leaves?"

retrieval_qa_chain.run(query)

MLflow LangChain flavorを使用してチェーンを記録し、DatabricksのCPU Model Servingエンドポイントにデプロイすることができます。MLflowを使用することで、モデルのバージョニングが自動的に行われ、本番プロセスに厳密性が加わります。

POCの完了後、品質向上のための実験を行う

要件に応じて、アプリケーションを本番稼動させるための適切な最適化を見つけるために実行できる多くの実験があります。MLflow のトラッキングおよび評価 API を使用すると、すべてのパラメータ、ベースモデル、パフォーマン ス指標、およびモデル出力をログに記録し、比較することができます。MLflow の新しい評価 UI を使用すると、モデル出力を並べて簡単に比較することができ、MLflow の追跡および評価データはすべて、さらなる分析のためにクエリ可能な形式で保存されます。よく見られる実験

  1. Latency - レイテンシーとコストを削減するため、小型モデルを試す
  2. Quality - オープンソースモデルを独自のデータで微調整してみてください。これは、ドメイン固有の知識や、望ましい応答形式を遵守するのに役立ちます
  3. Privacy - Databricks LLM-Optimized GPU Model Serving上でモデルをプライベートホスティングし、AI Gatewayを使用して、ユースケース全体でエンドポイントをフル活用してみてください

MosaicMLとLakehouse AIでRAGアプリケーションの開発を始めよう

Databricks Lakehouse AIプラットフォームにより、開発者は安心してGenerative AIアプリケーションを迅速に構築・展開することができます。上記のチャットアプリケーションをあなたの組織で再現するには、以下のものが必要です:

  1. テキスト埋め込みモデルやllama2-70b-chatに素早く簡単にアクセスできるMosaicML APIキー。アクセスするにはここからサインアップしてください。here
  2. MLflow AI Gateway Previewに参加してモデルAPIへのアクセスを管理する

RAGアプリケーションをさらに探求し、強化する:

Databricks 無料トライアル

関連記事

Platform blog

MetaのLlama 2とDatabricksでジェネレーティブAIアプリを構築する

翻訳:Junichi Maruyama. - Original Blog Link 本日、Meta社は最新の大規模言語モデル(LLM)である Llama 2 をオープンソースとして公開し、商用利用を開始した1。これはオープンソースAIにとって重要な進展であり、ローンチ・パートナーとしてMetaと協力できたことはエキサイティングでした。私たちは、Llama 2のモデルを事前に試すことができ、その能力とあらゆる可能性のあるアプリケーションに感銘を受けました。 今年初め、メタ社は LLaMA をリリースし、オープンソース(OSS)LLMのフロンティアを大きく前進させた。v1モデルは商用利用はできないが、生成AIとLLMの研究を大きく加速させた。 Alpaca と Vicuna は、高品質な指示フォローとチャットデータがあれば、LLaMAをChatGPTのように振る舞うようにファインチューニングできることを実証した。この研究結果に基づいて、Databricksは databricks-dolly-15k 命令追跡データセ
Company blog

Databricks + MosaicML

翻訳:Junichi Maruyama. - Original Blog Link 本日、私たちはMosaicMLの買収を完了したことをお伝えできることを嬉しく思います。MosaicMLは、企業向けにジェネレーティブAIモデルを作成し、カスタマイズするための先進的なプラットフォームです。Databricksの創業以来、私たちのミッションは、あらゆる企業のためにデータとAIを民主化することでした。MosaicMLと共に、ジェネレーティブAIアプリケーションのトレーニング、カスタマイズ、デプロイのためのクラス最高のエクスペリエンスを提供する予定です。 私たちはMosaicMLチームと協力し、ジェネレーティブAIを企業の主流にするために必要な3つの最も重要な開発を加速させます: モデル能力の迅速な民主化: 私たちは、すべての企業がモデルを広く利用できる未来を確信しています。あらゆるテクノロジーの民主化には、価格の引き下げとアクセスの向上が必要です。MosaicMLチームは、大規模な言語モデルのトレーニングとカスタマイズ
Platform blog

Lakehouse AI: Generative AIアプリケーション構築のためのデータ中心アプローチ

翻訳: Masahiko Kitamura オリジナル記事: Lakehouse AI: a data-centric approach to building Generative AI applications ジェネレーティブAIは、あらゆるビジネスに変革をもたらすでしょう。Databricksは10年にわたりAIイノベーションのパイオニアとして、AIソリューションを提供するために何千ものお客様と積極的に協力し、月間1,100万ダウンロードを誇るMLflowのようなプロジェクトでオープンソースコミュニティと協力してきました。Lakehouse AIとそのユニークなデータ中心アプローチにより、私たちはお客様がスピード、信頼性、完全なガバナンスでAIモデルを開発・展開できるよう支援します。本日開催されたData and AI Summitでは、Lakehouse AIがお客様のジェネレーティブAI制作の旅を加速させる最高のプラットフォームとなるよう、いくつかの新機能を発表しました。これらのイノベーションには、V
データサイエンス・ML一覧へ