果蝇AI06-Mac部署实操

果蝇AI06-Mac部署实操

Mac 本地实操清单(Apple M4 / 16 GB / macOS 27)

本清单对应本机已确认环境:Apple M4(arm64)、16 GB RAM、conda(/opt/anaconda3)、git(homebrew)。

按 Step 顺序执行,每步都有验收标准。出问题时先看文末"排错"。


文章目录

  • 果蝇AI06-Mac部署实操
    • [Step 0 · 建立工作区与专用环境(10 分钟)](#Step 0 · 建立工作区与专用环境(10 分钟))
    • [Step 1 · 在线打通 MaleCNS 数据查询(半小时,不下载大数据)](#Step 1 · 在线打通 MaleCNS 数据查询(半小时,不下载大数据))
    • [Step 2 · 下载核心数据到本地(1.1 GB,一次即可)](#Step 2 · 下载核心数据到本地(1.1 GB,一次即可))
    • [Step 3 · 本地加载连接图 + 20 行极简 LIF(第一次本地"通电")](#Step 3 · 本地加载连接图 + 20 行极简 LIF(第一次本地"通电"))
    • [Step 4 · 跑通学术界标准实现:Shiu 模型(Brian2,FlyWire 雌性数据)](#Step 4 · 跑通学术界标准实现:Shiu 模型(Brian2,FlyWire 雌性数据))
    • [Step 5(推荐)· Apple Silicon 加速路线:MLX 移植版(含 MaleCNS 数据包)](#Step 5(推荐)· Apple Silicon 加速路线:MLX 移植版(含 MaleCNS 数据包))
    • [Step 6 · 把大脑接进任务(参考 fly-cartpole 模式)](#Step 6 · 把大脑接进任务(参考 fly-cartpole 模式))
    • 磁盘/内存预算
    • 排错速查
    • 引用义务(发布任何结果时)


Step 0 · 建立工作区与专用环境(10 分钟)

bash 复制代码
mkdir -p ~/flyai && cd ~/flyai
conda create -n flyai python=3.11.4 -y
conda activate flyai
pip install numpy pandas pyarrow matplotlib jupyter scipy

✅ 验收:python -c "import numpy, pandas, pyarrow; print('ok')" 无报错。


Step 1 · 在线打通 MaleCNS 数据查询(半小时,不下载大数据)

  1. 打开 https://neuprint.janelia.org → 右上角注册/登录(可用 Google 账号)→ Account 页面复制 API token。
  2. 安装客户端并查询:
bash 复制代码
pip install neuprint-python
python 复制代码
# query_malecns.py ------ 第一次"摸到"雄性果蝇大脑
from neuprint import Client, fetch_neurons, fetch_adjacencies

token = "把你的token粘贴到这里"
c = Client("https://neuprint.janelia.org", dataset="male-cns:v1.0", token=token)

# 1) 拉取一个下行神经元类型的注释与神经毡分布
neurons, roi_counts = fetch_neurons("DNge104")
print(neurons.head())

# 2) 拉取它的上游/下游连接
outgoing, _ = fetch_adjacencies("DNge104", None)   # 它 → 谁
incoming, _ = fetch_adjacencies(None, "DNge104")   # 谁 → 它
print(f"outgoing partners: {len(outgoing)}, incoming partners: {len(incoming)}")
bash 复制代码
python query_malecns.py

✅ 验收:打印出 DNge104 的注释表和连接计数。

➕ 进阶(形态可视化):pip install "navis[all]",按官网 Download 页示例 fetch_skeletons(NeuronCriteria(type="DNge104")) 画骨架图。


Step 2 · 下载核心数据到本地(1.1 GB,一次即可)

官网下载页给出的对象存储路径(gs:// 前缀可换成 https://storage.googleapis.com/):

bash 复制代码
mkdir -p ~/flyai/data && cd ~/flyai/data
BASE=https://storage.googleapis.com/flyem-male-cns/v1.0/connectome-data/flat-connectome

# 完整连接图(必需)
curl -L -O $BASE/connectome-weights-male-cns-v1.0-minconf-0.5.feather   # 1.1 GB
# 神经元注释(必需)
curl -L -O $BASE/body-annotations-male-cns-v1.0-minconf-0.5.feather     # 13 MB
# 递质预测(建议)
curl -L -O $BASE/body-neurotransmitters-male-cns-v1.0.feather           # 42 MB

⚠️ 若 URL 失效(对象存储路径偶有调整),回到官方下载页 https://male-cns.janelia.org/download/ 复制最新链接,或使用 gcloud storage cp gs://flyem-male-cns/v1.0/connectome-data/flat-connectome/...。

✅ 验收:ls -lh 显示三个 feather 文件且大小与上表一致。


Step 3 · 本地加载连接图 + 20 行极简 LIF(第一次本地"通电")

python 复制代码
# first_lif.py ------ 验证本地全脑仿真的最小原型
import numpy as np, pandas as pd
import scipy.sparse as sp

data_dir = "~/flyai/data"
W_df = pd.read_feather(f"{data_dir}/connectome-weights-male-cns-v1.0-minconf-0.5.feather")
ann  = pd.read_feather(f"{data_dir}/body-annotations-male-cns-v1.0-minconf-0.5.feather")
print(f"突触行数: {len(W_df):,}, 神经元注释数: {len(ann):,}")

# ① 构建 突触前→突触后 的稀疏权重矩阵(线路,永不训练)
ids = np.unique(np.concatenate([W_df["body_pre"].values, W_df["body_post"].values]))
idx = {b: i for i, b in enumerate(ids)}
N = len(ids)
rows = W_df["body_pre"].map(idx).values
cols = W_df["body_post"].map(idx).values
W = sp.csr_matrix((W_df["weight"].values.astype(np.float32), (rows, cols)), shape=(N, N))
print(f"神经元 {N:,},稀疏度 {W.nnz / (N*N) * 100:.4f}%")

# ② 最小 LIF:膜电位衰减 + 阈值发放 + 稀疏传导
v = np.zeros(N, dtype=np.float32); spike = np.zeros(N, dtype=bool)
REST, THRESH, DECAY, SCALE = 0.0, 1.0, 0.85, 0.01
for t in range(50):
    drive = np.zeros(N, dtype=np.float32)
    if t < 5:   # 把前 5 步当作"给一组感觉神经元通电"(示例:随机 100 个,正式实验按注释表选真实类型)
        drive[np.random.choice(N, 100, replace=False)] = 5.0
    v = v * DECAY + drive + (W.T @ spike.astype(np.float32)) * SCALE   # 上游脉冲流入
    spike = v > THRESH
    v[spike] = REST
    if t % 5 == 0: print(f"t={t:02d}  活跃神经元: {spike.sum()}")

✅ 验收:能看到刺激后活动沿连接图扩散(活跃数先升后稳定/回落)。

📌 这 20 行就是所有开源"果蝇数字脑"的共同内核;跑通它,你就完成了"部署"的本质。


Step 4 · 跑通学术界标准实现:Shiu 模型(Brian2,FlyWire 雌性数据)

目的:对照"教科书实现",校准你的动力学直觉。注意这是雌性 FlyWire 数据,与 Step 2 的 MaleCNS 不是一套。

bash 复制代码
cd ~/flyai && git clone https://github.com/philshiu/Drosophila_brain_model.git
cd Drosophila_brain_model
conda env create -f environment.yml
conda activate <环境名见yml>
jupyter lab   # 打开 example.ipynb 逐步运行

要点:

  • v783 公开版需按 README 修改 config 字典(Completeness_783.csv / Connectivity_783.parquet,从 FlyWire Codex 官方下载页获取)。
  • 务必按 Brian2 官方文档配置 C++ 代码生成(性能差一个量级)。
  • 本机 CPU 多核够用;n_proc: -1 用满所有核。

✅ 验收:能对指定 FlyWire ID 做激活/沉默,输出脉冲栅格图。


Step 5(推荐)· Apple Silicon 加速路线:MLX 移植版(含 MaleCNS 数据包)

bash 复制代码
cd ~/flyai && git clone https://github.com/Kisame76/drosophila-brain-mlx.git
# 按该仓库 README 安装 mlx 及依赖(Apple Silicon 专用)
# 亮点:与 Brian2 参考实现做过对齐验证;自带度保持重连对照实验;upstream 兼容 run_exp 输出

备选:seohyunjun/mps-malecns-model(PyTorch MPS 后端原生跑 MaleCNS,含数据校验、按名刺激、3D 活动报告)。

✅ 验收:同一刺激条件下,MLX 版与 Step 4 的 Brian2 版输出趋势一致。


Step 6 · 把大脑接进任务(参考 fly-cartpole 模式)

  1. git clone https://github.com/Curt-Park/fly-cartpole 精读:MaleCNS 5,459 神经元飞行稳定回路 → CartPole,只调 5 个输入增益(275.6 → 499.9 步)。
  2. 照抄其结构,把任务换成你想要的(Dino / Pong / 自定义)。
  3. 训练读出用最简单的先跑通:逻辑回归 / CEM,再上 REINFORCE/PPO。
  4. 每个实验强制带对照:随机重连图、打乱突触、MLP 基线。

进阶身体(可选):

  • pip install flygym(FlyGym 2.x,2026-03 新 API,M4 CPU 约实时 2 倍速;文档 https://neuromechfly.org;旧版已迁 flygym-gymnasium)
  • pip install git+https://github.com/TuragaLab/flybody.git(官方 RL 任务,python=3.10 conda 环境)

磁盘/内存预算

内容 大小 必要性
代码仓库(4-5 个) < 2 GB ✅
MaleCNS 核心三件(Step 2) ≈ 1.2 GB ✅
FlyWire v783 连接表(Shiu 用) 约 2-4 GB Step 4 时
SWC 骨架 / 大表(syn-points 等) 7-13 GB / 数百 TB ❌ 别下
合计合理预算 < 20 GB

排错速查

症状 处理
feather 读取报 schema 错 升级 pyarrow;确认文件下载完整(对比官网标注大小)
neuprint 401/403 token 过期或未登录;重新在 neuPrint Account 页生成
Brian2 编译失败 确认 Xcode Command Line Tools:xcode-select --install;按 Brian2 文档配 C++ 生成
内存吃紧 用 scipy.sparse 而非 dense;只加载 connectome-weights,别碰 syn-points(12.7 GB)
分不清数据集 每个脚本头部写注释:# dataset: male-cns:v1.0 (雄性, 脑+VNC) 或 # dataset: fafb:v783 (雌性, 仅脑)

引用义务(发布任何结果时)

  • 数据:MaleCNS v1.0,CC-BY ------ 署名 FlyEM / HHMI Janelia、University of Cambridge、MRC LMB、Google Research;引用 Berg et al., Cell (2026)。
  • 模型:沿用 Shiu et al. 2024 / 各开源仓库原许可证(多数 MIT/Apache,逐仓库确认)。
相关推荐
微尘hjx30 分钟前
【Deep-OC-SORT 02】多轨迹算法Deep-OC-SORT-相对 OC-SORT 的改进点
人工智能·算法·yolo·目标跟踪·视觉检测·ultralytics·deep-oc-sort
梦帮科技31 分钟前
意识启发式量子隧穿退火算法用于全局优化 (CITA) 完整技术指南
网络·人工智能·算法·量子计算·模拟退火算法
波儿菜36 分钟前
Xcode MCP 助力运行时二进制分析
人工智能·程序员·汇编语言
Vol火山1 小时前
从买工具到建能力:数字化部门如何把 AI 变成可复制的生产力
人工智能
莱茶荼菜1 小时前
【slam公式】
人工智能·线性代数·机器学习
Henry-SAP1 小时前
SAP PP中的核心业务流程——离散制造、重复制造、流程制造三大模式解析
前端·数据库·人工智能·制造
Zhao-Jichao1 小时前
AI Prompting for Everyone 课程笔记 - P20 实验与期末项目 Lab and Final Project
前端·人工智能·笔记
敢敢のwings1 小时前
TACDYN-WAM 深度解读:机器人如何预测接触变化,并据此生成动作
人工智能·机器学习·机器人
沉默王二1 小时前
阿里版Codex,再次惊艳到我了。
人工智能·openai·agent