Upgrade to Pro — share decks privately, control downloads, hide ads and more …

LLMのオープンソース化とDatabricks

Naoya Abe
April 25, 2023

 LLMのオープンソース化とDatabricks

2023/4/25に実施したMLOps Communityイベント「LLM(GPT, PaLM等) with MLOps LT大会!!!」での発表スライドです。
https://mlops.connpass.com/event/279156/

Naoya Abe

April 25, 2023
Tweet

Other Decks in Technology

Transcript

  1. 自己紹介 - 阿部 直矢 - • Databricks の Solutions Architect

    (プリセー ルス) として活動中。 • データレイクハウスを使ったMLOps基盤の提 案活動。データエンジニアリングも。 • ジャンル不問でマンガが大好き、電子書籍だ けで3,000冊以上を購入。常に未読マンガのス トックが無いと落ち着かない病。
  2. 命令追従型LLM を実用化する上での課題 • State-of-the-art なモデルたち(例: GPT-4, PaLM 等)はAPI越しに利用するSaaS として提供されており、自社環境にデプロイできない ◦

    セキュリティ上の懸念 ◦ カスタマイズ性が限定的 • 自社環境にデプロイ可能なLLaMAベースのモデルたち(例: LLaMA, Alpaca, Vicuna, GPT4ALL 等)はライセンスの問題で学術的な用途に限定されている ◦ ビジネスの現場で商用利用することができない
  3. LLMの完全なオープンソース化を目指す動き • Cerebras-GPT ◦ Cerebrasが開発、OSS化 ◦ 今年 3/28 にリリース ◦

    独自モデル。命令追従型のタスク用にはチューニングされていない • Open Assistant ◦ LAION-AIが主導、OSSとして開発中 ◦ EleutherAI Pythia ベース (LLaMAベースもあり)
  4. LLMの完全なオープンソース化を目指す動き • Cerebras-GPT ◦ Cerebrasが開発、OSS化 ◦ 今年 3/28 にリリース ◦

    独自モデル。命令追従型のタスク用にはチューニングされていない • Open Assistant ◦ LAION-AIが主導、OSSとして開発中 ◦ EleutherAI Pythia ベース (LLaMAベースもあり) • Dolly ◦ Databricksが開発、OSS化。 ◦ 今年 3/24に1.0リリース、4/12 に 2.0リリース ◦ EleutherAI Pythia ベース ◦ 命令追従の能力を持った、世界初のオープンソースLLM 弊社 Databricks で、完全オープ ンソースの命令追従型 LLMをリ リースしました!
  5. どのように商用利用可能にしたか - Dolly の系譜 - LLaMA Alpaca by Meta by

    Stanford by OpenAI GPT-3.5で生成 データセット Dolly独自 データセット Pythia by EleutherAI Dolly 1.0 by Databricks by Databricks Dolly 2.0 by Databricks ライセンスで商用利用禁止 商用利用禁止 商用利用可能 商用利用可能
  6. Dollyのデータセットは全てDatabricks社員の手作り • 約5,000名の社員が1週間かけて、15,000件のデータセットをコツコツと蓄積 • Open Q&A、Closed Q&A、Wikipediaからの情報抽出 & 要約、ブレインストーミング、分類、 クリエイティブな文章生成

    といったカテゴリを設置 • 社内で投稿数を競うリーダーボードを公開し、上位者には報奨を出すことでモチベーションを喚 起! • ChatGPT等によるデータ生成は行わず、全て社員自身が考えたオリジナル文章のみで構成し ているため、とても人間らしい高品質なデータセットが完成
  7. Dolly 2.0 で何を得た(得られる)か? • 命令追従型のタスク(例:ブレインストーミング、要約 等)に対応した、無償かつ商 用利用可能なモデルを提供すること(学習済みモデルがHagging Face上で公開) • 制約無く自社のインフラ上にモデルをデプロイできるので、

    ◦ ファインチューニングを含む自由なカスタマイズが可能 ◦ 自社の情報等を外部に渡さず、完全に閉じた環境でセキュリティを確保 • モデルはパラメータ数が30億、60億、120億の3種類を用意。LLMとしてはかなりコ ンパクトであり、安価に運用可能。 • LLMのオープンソース化の流れを加速できた。Dolly 発表後には、他のオープン LLMが増え続けている。(StableLM, h2ogpt)
  8. LLM の管理 - MLflow の 対応 - • 先日 4/18

    に MLflow 2.3 がリリース • MLflowの新しいFlavorとして、以下が用意されました! ◦ Hugging Face Transformers ◦ LangChain ◦ OpenAI
  9. Hugging Face Transformers のモデルロギング import mlflow import transformers architecture =

    "databricks/dolly-v2-3b" dolly = transformers.pipeline(model=architecture, trust_remote_code=True) with mlflow.start_run(): model_info = mlflow.transformers.log_model( transformers_model=dolly, artifact_path="dolly3b", input_example="Hello, Dolly!", ) loaded_dolly = mlflow.transformers.load_model( model_info.model_uri, max_new_tokens=250, ) • transformers をネイティブな形式 でロギング & ロードできる • モデルを自分でファインチューニン グする場合の実験管理、モデルレ ジストリでの管理、デプロイが MLflowでやりやすくなる
  10. LangChain (LLMChain) のモデルロギング 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} ), ) mlflow.langchain.log_model( lc_model=llm_chain, artifact_path="model", registered_model_name="english-to-french-chain-gpt-3.5-turbo-1") LLMChainをロギングするので、 Model + Prompt Templateをまとめて管理が 出来る ※ 現時点ではHuggingFaceHubとOpenAIの LLMChainのみ対応だが、今後に期待。
  11. Spark の UDF を使ったスケールアウト from pyspark.sql.functions import pandas_udf summarizer_pipeline =

    pipeline("summarization", model="t5-small", tokenizer="t5-small", num_beams=10) summarizer_broadcast = sc.broadcast(summarizer_pipeline) @pandas_udf('string') def summarize_review(reviews): pipe = summarizer_broadcast.value( ("summarize: " + reviews).to_list(), batch_size=8, truncation=True) return pd.Series([s['summary_text'] for s in pipe]) camera_reviews_df = spark.read.format("delta").load("/tmp/.../review/cleaned") display(camera_reviews_df .withColumn("summary", summarize_review("review_body")) .select("review_body", "summary") .limit(10)) Spark Clusterの複数のGPUワーカー ノードに処理を分散させ、大量の推論が 分散処理することができる
  12. 良かったところ まとめ • 無償で商用利用可能なオープンソースLLMが出てきて、自社のインフラ上に デプロイできるので、 ◦ ファインチューニングを含む自由なカスタマイズが可能 ◦ 自社の情報等を外部に渡さず、セキュリティを確保できる •

    MLflowがLangChain, transformersに対応したことで、LLMOpsがまた一歩 進化 • 規模の大きい実際のユースケースでは、Sparkもうまく活用してスケーラビリ ティを確保する必要 すべて Open Source
  13. まだ足りないと思うところ • MLflowのLangChain用Flavorが現時点ではLLMChainの HuggingFaceHubとOpenAIだけなところ。 ◦ HuggingFacePipelineに対応してくれれば、ローカルでファインチューニングした LLM + Prompt TemplateをLLMChain化し管理できる。

    ◦ 他のLLMChainやAgentのロギングへの対応が待たれる。 • Dolly は Hugging Face上のInference APIがOFFになっているため、 LangChainのHuggingFaceHubを使ったLLMChain化ができない。 • Dolly 含むオープンソースLLMの日本語対応 今後に期待!
  14. 弊社のユーザーコミュニティも仲間を募集中です! JEDAI - The Data & AI Meetup (Databricks Japan

    のユーザー会) https://jedai.connpass.com/ 次回イベント 4/26 18:00 - https://jedai.connpass.com/event/278235/ つい昨日 1,100名 を達成しました!