用途:使用 Meta AI 的 ESM-2(fair-esm 包,import esm)为蛋白质序列提取嵌入,供下游机器学习使用,也可做掩码语言模型打分和接触预测。注意与 Biohub 的 esm 分支区分:本技能只覆盖 fair-esm,使用 esm.pretrained.*。
主要能力:逐残基与逐序列嵌入;掩码语言模型打分(可对突变位点做 logit 比较);接触预测(return_contacts=True)。可用模型包括 esm2_t6_8M_UR50D(6 层、320 维、8M)、esm2_t33_650M_UR50D(33 层、1280 维、650M,默认)和 esm2_t36_3B_UR50D(36 层、2560 维、3B,需 24GB+ 显存)。
使用方式:安装 fair-esm 后,用 esm.pretrained.esm2_t33_650M_UR50D() 加载模型与 alphabet,经 get_batch_converter() 编码序列,在 torch.no_grad() 下调用 model(toks.cuda(), repr_layers=[33]) 获取 out["representations"][33]。输出形状为 (B, L_max+2, D),含 BOS/EOS 与填充;单序列可用 1:-1 切片,批量需按 token_lengths 去除 BOS/EOS 后再池化。接触输出形状为 (B, L_max, L_max),需按各序列长度裁剪。
适用场景:蛋白质嵌入提取、突变效应打分、接触图预测等下游任务。
限制:需 Python 3.8+(推荐 3.11)、CUDA 11.7+(推荐 12.x);显存 8GB 可跑 8M,16GB 可跑 650M,3B 需 24GB+。首次调用会从 torch.hub 下载权重,可设置 TORCH_HOME 指向缓存。远程计算需 ≥16GB 显存,并需预缓存 .pt 权重或可访问 dl.fbaipublicfiles.com。序列需非空,批量时须保持顺序以正确关联嵌入与序列 ID。若报 ModuleNotFoundError: No module named 'esm.models',说明需要的是 Biohub 分支,应改用 esmfold2 技能。结构预测请使用 esmfold2。