モデル概要
モデル特徴
モデル能力
使用事例
license: other license_name: health-ai-developer-foundations license_link: https://developers.google.com/health-ai-developer-foundations/terms language:
- en pipeline_tag: text-generation library_name: transformers tags:
- therapeutics
- drug-development extra_gated_heading: Hugging FaceでのTxGemmaへのアクセス extra_gated_prompt: >- Hugging FaceでTxGemmaにアクセスするには、Health AI Developer Foundationの利用規約を確認し同意する必要があります。 これを行うには、Hugging Faceにログインしていることを確認し、以下をクリックしてください。 リクエストは即時処理されます。 extra_gated_button_content: ライセンスを確認
TxGemmaモデルカード
モデルドキュメント: TxGemma
リソース:
- Google Cloud Model Gardenのモデル: TxGemma
- Hugging Faceのモデル: TxGemma
- GitHubリポジトリ(サポートコード、Colabノートブック、ディスカッション、および イシュー): TxGemma
- クイックスタートノートブック: notebooks/quick_start
- サポート: 連絡先を参照。
利用規約: Health AI Developer Foundations利用規約
著者: Google
モデル情報
このセクションでは、TxGemmaモデルとその使用方法について説明します。
説明
TxGemmaは、Gemma 2を基に構築された軽量で最先端のオープン言語モデルのコレクションで、 治療開発向けにファインチューニングされています。2B、9B、27Bの3つのサイズがあります。
TxGemmaモデルは、低分子、タンパク質、核酸、疾患、細胞株など、さまざまな治療モダリティとターゲットに関連する情報を処理および理解するように設計されています。TxGemmaは、特性予測などのタスクに優れており、さらなるファインチューニングの基盤として、または創薬のための対話型の会話エージェントとして使用できます。このモデルは、Therapeutics Data Commons (TDC)からキュレーションされた多様な命令チューニングデータセットを使用してGemma 2からファインチューニングされています。
TxGemmaは、狭い形式のプロンプトを期待する予測モデルとして、および9Bと27Bバージョンの場合、より柔軟で多回転の相互作用に使用できる会話モデルとして提供されます。この会話モデルは、いくつかの生の予測性能を犠牲にしています。詳細については、原稿を参照してください。
主な特徴
- 汎用性: 幅広い治療タスクで強力な性能を発揮し、多くのベンチマークで最先端の性能を上回るか一致します。
- データ効率: 大規模なモデルと比較しても限られたデータで競争力のある性能を示し、前身モデルを上回ります。
- 会話能力 (TxGemma-Chat): 自然言語対話に参加し、予測の背後にある理由を説明できる会話バリアントを含みます。
- ファインチューニングの基盤: 専門的なユースケースのための事前トレーニング済み基盤として使用できます。
潜在的なアプリケーション
TxGemmaは、以下の分野の研究者にとって貴重なツールとなる可能性があります:
- 加速された創薬: ターゲット同定、薬物-ターゲット相互作用予測、臨床試験承認予測など、幅広いタスクの治療薬とターゲットの特性を予測することで、治療開発プロセスを効率化します。
使用方法
以下は、GPU上でモデルをローカルで迅速に実行するためのいくつかのコードスニペットです。大量の入力に対して推論を実行する場合は、Model Gardenを使用してプロダクション版を作成することをお勧めします。
治療タスクのためのプロンプトのフォーマット
import json
from huggingface_hub import hf_hub_download
# TDCタスクのプロンプトテンプレートをロード
tdc_prompts_filepath = hf_hub_download(
repo_id="google/txgemma-9b-chat",
filename="tdc_prompts.json",
)
with open(tdc_prompts_filepath, "r") as f:
tdc_prompts_json = json.load(f)
# TDCタスクと入力の例を設定
task_name = "BBB_Martins"
input_type = "{Drug SMILES}"
drug_smiles = "CN1C(=O)CN=C(C2=CCCCC2)c2cc(Cl)ccc21"
# テンプレートと入力薬物SMILES文字列を使用してプロンプトを構築
TDC_PROMPT = tdc_prompts_json[task_name].replace(input_type, drug_smiles)
print(TDC_PROMPT)
結果のプロンプトは、モデルが期待する形式になります:
Instructions: Answer the following question about drug properties.
Context: As a membrane separating circulating blood and brain extracellular fluid, the blood-brain barrier (BBB) is the protection layer that blocks most foreign drugs. Thus the ability of a drug to penetrate the barrier to deliver to the site of action forms a crucial challenge in development of drugs for central nervous system.
Question: Given a drug SMILES string, predict whether it
(A) does not cross the BBB (B) crosses the BBB
Drug SMILES: CN1C(=O)CN=C(C2=CCCCC2)c2cc(Cl)ccc21
Answer:
予測タスクでのモデルの実行
# pip install accelerate transformers
from transformers import AutoTokenizer, AutoModelForCausalLM
# Hugging Face Hubから直接モデルをロード
tokenizer = AutoTokenizer.from_pretrained("google/txgemma-9b-chat")
model = AutoModelForCausalLM.from_pretrained(
"google/txgemma-9b-chat",
device_map="auto",
)
# フォーマットされたTDCプロンプト(上記の「治療タスクのためのプロンプトのフォーマット」セクションを参照)
prompt = TDC_PROMPT
# トークン化された入力を準備
input_ids = tokenizer(prompt, return_tensors="pt").to("cuda")
# 応答を生成
outputs = model.generate(**input_ids, max_new_tokens=8)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
または、pipeline
APIを使用することもできます。これは、モデルとトークナイザーのロードと使用の複雑な詳細を抽象化しながら、推論を実行する簡単な方法を提供します:
# pip install transformers
from transformers import pipeline
# モデルを使用してテキスト生成パイプラインをインスタンス化
pipe = pipeline(
"text-generation",
model="google/txgemma-9b-chat",
device="cuda",
)
# フォーマットされたTDCプロンプト(上記の「治療タスクのためのプロンプトのフォーマット」セクションを参照)
prompt = TDC_PROMPT
# 応答を生成
outputs = pipe(prompt, max_new_tokens=8)
response = outputs[0]["generated_text"]
print(response)
会話使用のためのチャットテンプレートの適用
TxGemma-Chatモデルは、会話使用のために遵守する必要があるチャットテンプレートを使用します。これを適用する最も簡単な方法は、トークナイザーの組み込みチャットテンプレートを使用することです。以下のスニペットに示されています。
モデルをロードし、会話にチャットテンプレートを適用しましょう。この例では、単一のユーザーインタラクションから始めます:
# pip install accelerate transformers
from transformers import AutoTokenizer, AutoModelForCausalLM
# Hugging Face Hubから直接モデルをロード
tokenizer = AutoTokenizer.from_pretrained("google/txgemma-9b-chat")
model = AutoModelForCausalLM.from_pretrained(
"google/txgemma-9b-chat",
device_map="auto",
)
# フォーマットされたTDCプロンプト(上記の「治療タスクのためのプロンプトのフォーマット」セクションを参照)
prompt = TDC_PROMPT
# 会話形式でプロンプトをフォーマット
messages = [
{ "role": "user", "content": prompt}
]
# トークナイザーの組み込みチャットテンプレートを適用
chat_prompt = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
この時点で、プロンプトには次のテキストが含まれています:
<bos><start_of_turn>user
Instructions: Answer the following question about drug properties.
Context: As a membrane separating circulating blood and brain extracellular fluid, the blood-brain barrier (BBB) is the protection layer that blocks most foreign drugs. Thus the ability of a drug to penetrate the barrier to deliver to the site of action forms a crucial challenge in development of drugs for central nervous system.
Question: Given a drug SMILES string, predict whether it
(A) does not cross the BBB (B) crosses the BBB
Drug SMILES: CN1C(=O)CN=C(C2=CCCCC2)c2cc(Cl)ccc21
Answer:<end_of_turn>
<start_of_turn>model
ご覧のとおり、各ターンは<start_of_turn>
デリミタで始まり、その後エンティティの役割(ユーザーが提供するコンテンツの場合はuser
、LLM応答の場合はmodel
)が続きます。ターンは<end_of_turn>
トークンで終了します。
トークナイザーのチャットテンプレートを使用せずにプロンプトを構築する必要がある場合は、この形式に従って手動で構築できます。
プロンプトの準備が整ったら、生成は次のように実行できます:
inputs = tokenizer.encode(chat_prompt, add_special_tokens=False, return_tensors="pt")
outputs = model.generate(input_ids=inputs.to("cuda"), max_new_tokens=8)
response = tokenizer.decode(outputs[0, len(inputs[0]):], skip_special_tokens=True)
print(response)
複数のインタラクションの場合、モデルの応答と追加のターンのユーザープロンプトをチャットメッセージ履歴に追加し、同じ方法で生成を実行します:
messages.extend([
{ "role": "assistant", "content": response },
{ "role": "user", "content": "Explain your reasoning based on the molecule structure." },
])
chat_prompt = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
inputs = tokenizer.encode(chat_prompt, add_special_tokens=False, return_tensors="pt")
outputs = model.generate(input_ids=inputs.to("cuda"), max_new_tokens=512)
response = tokenizer.decode(outputs[0, len(inputs[0]):], skip_special_tokens=True)
print(response)
または、トークナイザーを使用してチャットテンプレートを適用するなどの詳細を抽象化するpipeline
APIを使用することもできます:
# pip install transformers
from transformers import pipeline
# モデルを使用してテキスト生成パイプラインをインスタンス化
pipe = pipeline(
"text-generation",
model="google/txgemma-9b-chat",
device="cuda",
)
# フォーマットされたTDCプロンプト(上記の「治療タスクのためのプロンプトのフォーマット」セクションを参照)
prompt = TDC_PROMPT
# 初期ターンの会話形式でプロンプトをフォーマット
messages = [
{ "role": "user", "content": prompt}
]
# 初期ターンの応答を生成
outputs = pipe(messages, max_new_tokens=8)
print(outputs[0]["generated_text"][-1]["content"].strip())
# 追加ターンのユーザープロンプトを追加
messages = outputs[0]["generated_text"]
messages.append(
{ "role": "user", "content": "Explain your reasoning based on the molecule structure." }
)
# 追加ターンの応答を生成
outputs = pipe(messages, max_new_tokens=512)
print(outputs[0]["generated_text"][-1]["content"].strip())
例
TxGemmaの使用方法の例については、以下のColabノートブックを参照してください:
- モデルを簡単に試すには、Hugging Faceからの重みを使用してローカルで実行する方法を説明したColabでのクイックスタートノートブックを参照してください。これにはTDCからのいくつかの例評価タスクが含まれています。
- Hugging FaceでTxGemmaをファインチューニングする方法のデモについては、Colabでのファインチューニングノートブックを参照してください。
- TxGemmaをGemini 2を動力源とするより大きなエージェントワークフローの一部としてツールとして使用する方法のデモについては、Colabでのエージェントワークフローノートブックを参照してください。
モデルアーキテクチャの概要
- TxGemmaは、軽量で最先端のオープンLLMであるGemma 2ファミリーを基にしています。デコーダー専用のトランスフォーマーアーキテクチャを利用しています。
- ベースモデル: Gemma 2(2B、9B、27Bパラメータバージョン)。
- ファインチューニングデータ: 多様な治療モダリティとターゲットをカバーする命令チューニングデータセットのコレクションであるTherapeutics Data Commons。
- トレーニングアプローチ: 治療データ(TxT)と、会話バリアントの場合は一般的な命令チューニングデータの混合物を使用した命令ファインチューニング。
- 会話バリアント: TxGemma-Chatモデル(9Bおよび27B)は、会話能力を維持するために治療と一般的な命令チューニングデータの混合物でトレーニングされています。
技術仕様
- モデルタイプ: デコーダー専用トランスフォーマー(Gemma 2ベース)
- 主要な出版物: TxGemma: Efficient and Agentic LLMs for Therapeutics
- モデル作成日: 2025-03-18(TxGemma Variant Proposalから)
- モデルバージョン: 1.0.0
性能と検証
TxGemmaの性能は、TDCから派生した66の治療タスクの包括的なベンチマークで検証されています。
主要な性能指標
- 集約された改善: 元のTx-LLM論文と比較して、66の治療タスクのうち45で改善されています。
- 最先端の性能: 66のタスクのうち50で最先端の性能を上回るか一致し、26のタスクで専門家モデルを上回ります。完全な内訳については、TxGemma論文の表A.11を参照してください。
入力と出力
- 入力: テキスト。最高の性能を得るには、テキストプロンプトは命令、コンテキスト、質問、およびオプションでfew-shot例を含むTDC構造に従ってフォーマットする必要があります。入力にはSMILES文字列、アミノ酸配列、ヌクレオチド配列、自然言語テキストを含めることができます。
- 出力: テキスト。
データセットの詳細
トレーニングデータセット
Therapeutics Data Commons: 安全で効果的な医薬品の発見と開発にわたる66のタスクをカバーする命令チューニングデータセットのキュレーションされたコレクション。これには、さまざまな生物医学的エンティティにわたる1500万以上のデータポイントが含まれます。リリースされたTxGemmaモデルは商用ライセンスを持つデータセットでのみトレーニングされていますが、出版物のモデルは非商用ライセンスを持つデータセットでもトレーニングされています。
一般的な命令チューニングデータ: TxGemma-ChatでTDCと組み合わせて使用されます。
評価データセット
Therapeutics Data Commons: トレーニングに使用されたのと同じ66のタスクが評価に使用され、TDCの推奨方法論(ランダム、スキャフォールド、コールドスタート、組み合わせ、および時間的)に従ってデータ分割されます。
ライセンス
TxGemmaの使用は、Health AI Developer Foundations利用規約によって管理されます。
実装情報
このセクションには、モデルの内部に関する詳細が含まれています。
ソフトウェア
トレーニングはJAXを使用して行われました。
JAXを使用すると、研究者はTPUを含む最新世代のハードウェアを活用して、大規模なモデルのトレーニングをより迅速かつ効率的に行うことができます。
使用と制限
意図された使用
- 治療の研究と開発。
利点
TxGemmaは、治療開発を加速するための汎用性と強力なツールを提供します。以下を提供します:
- 幅広いタスクでの強力な性能。
- 大規模なモデルと比較したデータ効率。
- プライベートデータからのさらなるファインチューニングの基盤。
- エージェントワークフローへの統合。
制限
- TDCの公開データでトレーニングされています。
- タスク固有の検証は、エンドユーザーによるダウンストリームモデル開発の重要な側面です。
- あらゆる研究と同様に、開発者は、特定のアプリケーションの意図された使用設定(年齢、性別、状態、スキャナーなど)に適切に代表されるデータを使用して性能を理解するために、ダウンストリームアプリケーションが検証されていることを確認する必要があります。
引用
@article{wang2025txgemma,
title={TxGemma: Efficient and Agentic LLMs for Therapeutics},
author={Wang, Eric and Schmidgall, Samuel and Jaeger, Paul F. and Zhang, Fan and Pilgrim, Rory and Matias, Yossi and Barral, Joelle and Fleet, David and Azizi, Shekoofeh},
year={2025},
}
論文はこちらで見つけることができます。



