个人推荐指数:⭐️⭐️⭐️

Biomni 简介

Biomni 是一个通用生物医学 AI Agent。它包含三个部份:智能体(A1)、环境(E1)、LLM模型(R0)

智能体(A1) 是一个基于 ReAct,不断进行 “思考 -> 行动 -> 观察” 的智能体,整体上来说比较简单,也可以纳入反思过程,但默认不进行反思。

环境(E1) 是整个 Biomni 的核心,它包括:

  • 工具库(Tools):覆盖 17 个生物医学子领域的专用函数,包括基因组学、药理学、免疫学、分子生物学、癌症生物学、细胞生物学、文献检索等
  • 数据湖(Data Lake):约 80 个预处理的生物医学数据集,涵盖蛋白质相互作用、基因表达、药物-靶点关系、基因-疾病关联、GWAS、单细胞数据、sgRNA 等
  • 软件库(Libraries):预装的 Python/R 包和 CLI 工具,如 scanpy、biopython、gget、lifelines 等
  • Know-How 知识库:最佳实践、实验协议和故障排查指南文档

LLM模型(R0) 是 Biomni 团队基于 Qwen-32B 通过强化学习训练的生物学推理模型,专门针对工具使用、多步推理和复杂生物学问题求解进行了优化,支持 131072 长上下文。


Biomni E1 (Environment) 环境安装

1
2
3
4
5
6
# 克隆仓库
git clone https://github.com/snap-stanford/Biomni.git
cd Biomni/biomni_env

# 安装全量 biomni_e1 环境
bash setup.sh

自定义配置参考: https://github.com/snap-stanford/Biomni/blob/main/biomni_env/README.md


Biomni A1 (Agent) 智能体安装

1
pip install biomni --upgrade

Biomni R0 模型下载和本地部署启动

1
2
3
4
5
6
7
8
9
# 安装sglang
pip install sglang

# 设置 huggingface 镜像站
export HF_ENDPOINT=https://hf-mirror.com

# 下载模型
cd llms/models/
hf download biomni/Biomni-R0-32B-Preview --local-dir ./Biomni-R0-32B-Preview

启动Biomni-R0的SGLang服务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/bin/bash
#SBATCH --partition=h20
#SBATCH --nodelist=h20node6
#SBATCH --nodes=1
#SBATCH --cpus-per-task=8
#SBATCH --mem=256G
#SBATCH --gres=gpu:2
#SBATCH --job-name=R0
#SBATCH --output=/mnt/nfs_share/tlj/Project/scAgents/Biomni/txm_test/R0/R0.out
#SBATCH --error=/mnt/nfs_share/tlj/Project/scAgents/Biomni/txm_test/R0/R0.err

# 激活 conda 环境
source /usr/local/opt/anaconda3/etc/profile.d/conda.sh
conda activate biomni_e1

# 启动 SGLang 服务器
python -m sglang.launch_server \
--model-path /mnt/nfs_share/tlj/llms/models/Biomni-R0-32B-Preview \
--port 30000 \
--host 0.0.0.0 \
--mem-fraction-static 0.8 \
--tp 2 \
--trust-remote-code \
--json-model-override-args '{"rope_scaling":{"rope_type":"yarn","factor":1.0,"original_max_position_embeddings":32768}, "max_position_embeddings": 131072}'

测试

1
curl -s http://h20node6:30000/v1/chat/completions -H "Content-Type: application/json" -d '{"model": "Biomni-R0-32B-Preview", "messages": [{"role": "user", "content": "你好,你是谁?"}], "max_tokens": 500}' | jq

配置 Gradio 前端

  • 安装gradio

    1
    pip install "gradio>=5.0,<6.0" # 原始代码是用的是旧gradio的参数
  • 编写sbatch启动脚本

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    #!/bin/bash
    #SBATCH --partition=a100
    #SBATCH --nodelist=a100node1
    #SBATCH --nodes=1
    #SBATCH --cpus-per-task=8
    #SBATCH --mem=64G
    #SBATCH --gres=gpu:0
    #SBATCH --job-name=biomni
    #SBATCH --output=/mnt/nfs_share/tlj/Project/scAgents/Biomni/txm_test/web/web.out
    #SBATCH --error=/mnt/nfs_share/tlj/Project/scAgents/Biomni/txm_test/web/web.err

    # 激活conda
    source /usr/local/opt/anaconda3/etc/profile.d/conda.sh
    conda activate biomni_e1

    # 进入项目目录
    cd /mnt/nfs_share/tlj/Project/scAgents/Biomni

    # 设置环境变量
    export GRADIO_SERVER_NAME=192.168.205.185
    export GRADIO_SERVER_PORT=50003

    # 启动 Biomni Gradio 界面
    echo "启动 Biomni Gradio Web 界面..."
    echo "服务器地址: http://192.168.205.185:50003"

    # 禁用Python输出缓冲,确保实时输出到日志
    export PYTHONUNBUFFERED=1

    python -c "
    from biomni.config import default_config
    from biomni.agent import A1
    import os

    print('正在初始化 Biomni Agent...', flush=True)

    # 数据库查询使用 Qwen3
    default_config.llm = 'Qwen3-235B-A22B-2507'
    default_config.source = 'Custom'
    default_config.base_url = 'http://172.21.8.191:6080/v1'
    default_config.api_key = '123456'

    # Agent 推理使用 Biomni-R0
    agent = A1(
    path='./data',
    llm='Biomni-R0-32B-Preview',
    source='Custom',
    base_url='http://h20node6:30000/v1',
    api_key='EMPTY',
    expected_data_lake_files=[]
    )

    print('正在启动 Gradio 界面...', flush=True)
    print('服务器地址: http://192.168.205.185:50003', flush=True)
    print('Gradio服务启动后,将持续监听请求直到作业结束', flush=True)

    os.environ['GRADIO_SERVER_PORT'] = '50003'

    agent.launch_gradio_demo(
    server_name='192.168.205.185'
    )
    "

    echo "Gradio服务已停止"

以上命令显式地指定了LLM配置,因此不需要配置 .env 文件

  • 测试前端
    1
    你好,你是谁?
    1
    2
    告诉我这个数据的基本概况,并提出分析方案:
    data/20251223/input/pbmc_granulocyte_sorted_3k_filtered_feature_bc_matrix.tar.gz

个人总结

Biomni 以一个非常简单的 ReAct Agent实现了较为完整的端到端生物医学数据分析。然而测试下来,问题还是非常的多。例如:

  1. Agent会擅自修改环境,当遇到以来冲突时(例如numpy2与numba),它会使用 python代码自动pip安装他所认为正确的环境。这是非常危险的行为
  2. 使用 R0模型的时候问题很大
    • thinking 过程因为是模型自带的,因此无法在前端显示,有时候还会卡住,一直显示 “Each response must include thinking process followed by either”
    • 当问“你好,你是谁?”时,他居然会自己开始分析 CRISPR sgRNA的相关东西
  3. 一些可以PR的小问题
    • 按照官方环境配置,在调用scanpy分析单细胞数据时,numpy2与numba存在冲突
    • .env.example 中配置的变量名是 CUSTOM_MODEL_BASE_URL/LLM_SOURCE,而 biomni/config.py 中读取的是 BIOMNI_CUSTOM_BASE_URLBIOMNI_SOURCE

然鹅 Biomni 官方好像已经停止运维了orz,已经一个月没有更新了,持续观望吧


相关链接