Carbon-Xとは?DNAを読んで英語で答えるオープンモデルの特徴と、手元で動かすのに要るメモリ

Carbon-X。DNAを読むオープンモデル。llama.cppはb11742以降のバージョンを使う。何ができる?DNAの配列をチャットに貼ると、その配列について英語で答える。ダウンロードに申請・承認・ログインは要らない。ライセンスはApache 2.0。手元で動かすなら、GGUFのQ8_0。メモリが足りなければQ4_K_M。医療の判断には使えない(臨床での検証はされていない)。研究や勉強でDNAの配列を扱う人へ

Carbon-Xは、DNAの配列をチャットにそのまま貼ると、その配列について英語で答えるHugging Faceのオープンモデルです。GGUFのQ8_0なら、約16GBのGPUメモリとKVキャッシュの分で動き、配列を外のサービスに送らずに手元のパソコンで使えます。

申請や承認なしでだれでもダウンロードでき、ライセンスはApache 2.0です。ただし、臨床での検証はされておらず、医療の判断には使えません。

手元で使うなら、llama.cppをb11742以降のバージョンにしてから、GGUFのQ8_0(メモリが足りなければQ4_K_M)を読み込んでください。

目次

結論:だれでもダウンロードでき、Q8_0は約16GBのGPUメモリとKVキャッシュで動く

  • Carbon-Xは、Qwen3-14Bをもとに作られた14.8Bのモデルで、DNAと英語の両方を学習しています。
  • 変異が良性か病原性か、遺伝子の働きを調節する領域、どの生物のグループの配列か、続く塩基は何かを答え、理由も説明します。
  • Hugging Faceのリポジトリは非公開でもgatedでもなく、ログインしなくてもファイルを取得できます。
  • 手元で動かすなら、GGUFのQ8_0(15.8GB)がおすすめです。メモリが足りないときはQ4_K_M(9.6GB)を使います。
  • llama.cppで動かすときは、b11742以降のバージョンが要ります。それより前のバージョンでは、DNAが正しく読み込まれません。

2026年10月26日8時32分(日本時間)時点の、Hugging Faceのモデルカードとリポジトリの内容です。

Carbon-Xの早見表

項目 内容
作った組織 Hugging Faceと、中関村学院、テレソン遺伝学・医学研究所(TIGEM)、ナポリ・フェデリコ2世大学の研究チーム
もとのモデル Qwen3-14B
パラメータ数 14.8B
一度に読める長さ 40,960トークン
答えの言語 英語
ライセンス Apache 2.0
ダウンロード 申請・承認・ログインは要らない
リポジトリにモデルが上がった日 2026年10月22日(日本時間)
手元で動かすとき GGUFのQ8_0で約16GBのGPUメモリと、KVキャッシュの分
医療の判断 使えない(臨床での検証はされていない)

Carbon-Xが向いている人

研究や勉強でDNAの配列を扱っていて、配列について質問できるモデルを自分のGPUで動かしたい人に向いています。公式のブログでは、外部のモデルの提供元に配列を送らずに済むので、機密の配列や未発表の配列を自分の環境の中に置いたままにできる、としています。MacBookで動かしているデモの動画も、公式のブログにあります。

一方で、Inference APIやSpacesのデモ、ほかの会社の推論サービスを通して使うと、入力と出力のデータの扱いは、それぞれの提供元によって変わることがあります。遺伝情報はとても機密性が高いので、手元以外で使うときは、データの扱いを確かめてから使ってください。

Carbon-Xでできること

モデルカードによると、変異の影響の予測、配列の理解、続く塩基の予測を試す5つのベンチマークで、Carbon-Xの平均は66.7%でした。もとにしたQwen3-14Bより27ポイント高い結果です。

苦手なこともあります。スプライス部位とヒストン修飾についての問題は、正解率が29.8%と34.6%にとどまっています。塩基を正確に数える、位置を正確に示すといった作業は間違えることがあるので、プログラムで計算してから渡すように勧められています。

Carbon-Xには、DNAを読み込むための別の部品がありません。DNAも英語の文章も、同じ1つのモデルにトークンとして入ります。文章はQwen3の語彙で、DNAは6塩基ずつ区切った単位で読み込みます。

A、C、G、Tが6つ以上続く部分は、自動でDNAとして扱われます。NやRなどのあいまいな塩基を表す記号は、12塩基以上の並びの中で2割までなら、DNAとして扱われます。ただし、A、C、G、T以外の文字が入った6塩基は、1つの「分からない」トークンにまとめられます。細かく読ませたいときは、先にA、C、G、Tだけに絞ってください。

手元で動かすのに要るメモリとファイルの大きさ

手元で動かすときは、GGUFのファイルをllama.cppで使います。GGUFのファイルは次の5つで、ファイル名はcarbon-x-q8_0.ggufのように、種類を小文字にした名前です。

種類 大きさ
BF16 29.7GB
Q8_0(おすすめ) 15.8GB
Q6_K 12.6GB
Q5_K_M 11.1GB
Q4_K_M 9.6GB

Q8_0は、BF16の半分の大きさで、ベンチマークの結果はBF16とほぼ同じです。すべての層をGPUに載せると、Q8_0では約16GBのGPUメモリに加えて、読み込むトークン1つにつき約0.16MBのKVキャッシュが要ります。

メモリが足りないときはQ4_K_Mを使います。2つのベンチマークで、Q4_K_Mの結果は5つのファイルの中でいちばん低くなりました。BF16からQ5_K_Mまでは、もとのモデルとほぼ同じ結果です。

GGUFではなく、もとの重みをvLLMやTransformersで動かす場合は、BF16で80GBのGPU1枚に収まります。

動かし方:llama.cppのb11742以降で起動する

llama.cppは、b11742以降のバージョンを使います。b11742は、Carbon-XのDNA用のトークナイザーに初めて対応したバージョンで、2026年10月20日6時30分(日本時間)に出ました。ビルド済みのファイルはllama.cppのリリースページから取得できます。ソースからビルドするときは、次のコマンドを使います。

git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp
cmake -B build -DGGML_CUDA=ON
cmake --build build -j --target llama-server llama-cli

NVIDIAのGPUを使わないときは、-DGGML_CUDA=ONを外します。Macでは、MetalでGPUを使う設定が最初から有効なので、ほかの指定は要りません。ソースからビルドしたときは、llama-serverとllama-cliはbuild/binの中にできます。

次のコマンドで、Q8_0を使うサーバーが起動します。初めて起動するときは、-hfで指定したファイルが自動でダウンロードされます。

llama-server -hf HuggingFaceBio/Carbon-X-GGUF:Q8_0 \
    -ngl 99 -c 40960 --jinja \
    --chat-template-kwargs '{"enable_thinking": false}' \
    --temp 0.6 --top-p 0.95 --top-k 20 --min-p 0 \
    --port 8080
  • -ngl 99は、すべての層をGPUに載せる指定です。
  • Carbon-Xは考える過程を出さない設定で調整されているので、enable_thinkingはfalseのままにします。
  • --temp 0.6、--top-p 0.95、--top-k 20、--min-p 0は、Carbon-Xの標準の設定です。llama.cppのもともとの設定とは違うので、そのまま指定します。
  • -c 40960は、Carbon-Xが一度に読める長さのすべてです。

先にファイルをダウンロードしておくときは、次のコマンドを使います。そのあと、起動するコマンドの-hf HuggingFaceBio/Carbon-X-GGUF:Q8_0を-m carbon-x-q8_0.ggufに変えます。

hf download HuggingFaceBio/Carbon-X-GGUF carbon-x-q8_0.gguf --local-dir .

サーバーはOpenAIと同じ形のAPIで答えます。配列と質問は、同じメッセージに入れます。

curl -s http://localhost:8080/v1/chat/completions -H "Content-Type: application/json" -d '{
  "messages": [{"role": "user", "content": "Is this sequence more likely coding or non-coding? ATGGCGCTGTGGATGCGCCTCCTGCCCCTGCTGGCGCTGCTGGCCCTCTGGGGACCTGACCCAGCCGCAGCC"}]
}' | jq -r '.choices[0].message.content'

遺伝子の名前、鎖の向き、座標など、分かっていることも一緒に書くと、配列の正体や働きを当て推量で答えにくくなります。変異について聞くときは、もとの配列と変異のある配列の両方か、もとの配列と変異の位置・塩基の変化を渡します。

確かめ方:llama.cppのバージョンと、答えの中のDNA

まず、llama.cppのビルド番号が11742以上かを確かめます。

llama-server --version

表示された1行目の、buildのあとの数字が11742より小さいときは、新しいバージョンに入れ替えてください。version:のすぐあとの数字(0.7.0など)は、ビルド番号ではありません。古いバージョンでもファイルは読み込めますが、DNAの区切り方が正しくないまま答えが返ります。

次に、上のcurlで質問して、英語の答えが返るかを確かめます。答えの中のDNAの配列は<dna>と</dna>で囲まれて返ります。配列だけを取り出したいときは、このタグを外します。

vLLMやTransformersで動かすとき

もとの重みを使うときは、vLLMかTransformersで動かします。DNA用のトークナイザーは独自のコードなので、読み込むときにtrust_remote_codeを有効にします。Transformersは、バージョン5以降が要ります。

pip install -U vllm
vllm serve HuggingFaceBio/Carbon-X --trust-remote-code

初めて読み込むときは、トークナイザーがもとにする語彙をHugging Faceから取得します。

気をつけること

  • 臨床での検証はされていないので、医療の判断には使えません。
  • 情報が足りないと、配列の正体や働きを作り上げて答えることがあります。答えの生物学的な内容は、ほかの方法でも確かめてください。
  • 長いDNAの配列を作らせると、質が下がります。Carbon-Xは、今ある配列を読んで説明するためのモデルで、新しい配列を設計するようには学習していません。
  • 40,960トークンまで入力できますが、学習で使った長さ(約4万9千塩基まで)より大幅に長い入力は試されていません。

公式の情報

関連記事

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

社内エンジニアとして、SREとセキュリティの仕事をしています。サーバーの構築や運用、クラウド環境の設計にも関わってきました。趣味はゲームと漫画・アニメ。

コメント

コメントする

目次