
esm2_t12_35M_UR50D API 完全参考NVEsmConfig 关键参数与 AutoModel 调用详解【免费下载链接】esm2_t12_35M_UR50D项目地址: https://ai.gitcode.com/hf_mirrors/nvidia/esm2_t12_35M_UR50Desm2_t12_35M_UR50D 是 NVIDIA 基于 TransformerEngine 深度优化的 ESM-2 蛋白质语言模型本文为你带来一份完整的 API 参考指南重点讲解 NVEsmConfig 关键参数含义、AutoModel 自动加载机制以及四种模型类的调用方式。无论你是刚接触蛋白质 AI 建模的新手还是想在 GPU 上跑推理的老手这份简洁实用的速查手册都能帮你快速上手避免踩坑。esm2_t12_35M_UR50D 是什么esm2_t12_35M_UR50D 是 ESM-2 系列中最轻量级的模型之一参数量约 3500 万3.4 × 10⁷包含 12 层 Transformer 编码器。它由 Meta 的 ESM-2 模型改造而来采用**掩码语言建模Masked Language Modeling**目标训练能够根据氨基酸序列预测蛋白质结构、功能相关特征非常适合在资源有限的机器上做微调和推理。它最大的亮点是使用了 NVIDIA 的TransformerEngine库进行优化在保持原始权重与输出数值精度范围内一致的前提下显著提升训练与推理速度特别适合 NVIDIA Ampere、Hopper、Blackwell 架构的 GPU。核心配置记录在仓库根目录的 config.json 中其中model_type为nv_esmauto_map字段自动映射到自定义实现类。NVEsmConfig 关键参数详解 ⚙️NVEsmConfig 继承自 Hugging Face Transformers 的 EsmConfig在原始 ESM-2 配置基础上新增了多个与 TransformerEngine 相关的参数。其完整定义可在源码文件 esm_nv.py 中查看NVEsmConfig 定义于 esm_nv.py。最常用参数速查表参数名默认值说明hidden_size480隐藏层维度num_hidden_layers12Transformer 编码器层数num_attention_heads20注意力头数量intermediate_size1920FFN 中间层维度max_position_embeddings1026最大位置编码长度含特殊 tokenvocab_size33词表大小20 种氨基酸 特殊 tokenmask_token_id32掩码 token 的 IDpad_token_id1填充 token 的 IDposition_embedding_typerotary位置编码类型TE 优化版仅支持旋转位置编码hidden_actgelu激活函数tie_word_embeddingstrue是否绑定输入输出词嵌入TransformerEngine 专属参数NVEsmConfig 新增这是本模型 API 的核心差异点也是微调高性能时必须理解的部分qkv_weight_interleaved默认True是否交错排布 QKV 权重。若设为FalseQKV 权重将沿第 0 维拼接当fuse_qkv_paramsFalse时需设置为False。encoder_activation默认gelu编码器使用的激活函数支持 TransformerEngine 支持的激活类型。attn_input_format默认bshd注意力输入格式二选一bshdBatch、Sequence、Head、Dimension 标准填充格式thdTotal tokens打包/未填充格式适用于序列打包sequence packing训练。fuse_qkv_params默认True是否融合 QKV 参数。开启后 TransformerLayer 暴露单一融合参数可实现 QKV 融合优化减少拼接与拆分开销。micro_batch_size默认None注意力微批次大小用于 JIT Warmup 预热保证前向传播与激活重计算阶段使用相同内核。max_seq_length默认None注意力最大序列长度同样服务于 JIT Warmup。padded_vocab_size默认64填充后的词表大小用于支持 FP8 量化必须大于等于vocab_size校验逻辑见 esm_nv.py。attn_mask_type默认padding注意力掩码类型。add_pooling_layer默认False基础模型是否包含池化层。官方导出权重不包含 pooler 权重因此默认为False。layer_precision默认None逐层量化精度列表长度须等于num_hidden_layers每项为fp8、fp4或NoneBF16 回退。None表示不启用量化。use_quantized_model_init默认False是否使用quantized_model_init进行层初始化。参数校验规则需注意padded_vocab_size必须大于等于vocab_size否则会触发断言错误layer_precision的长度必须等于num_hidden_layers元素只能是fp8、fp4、None三者之一若layer_precision中包含fp4但未提供 fp4_recipe会直接报错相关逻辑见 esm_nv.py。AutoModel 调用详解四种模型类怎么选 得益于config.json中的auto_map配置你可以直接用 Hugging Face 的 Auto 系列 API 加载模型无需手动指定类名。完整的映射关系如下定义于 esm_nv.pyAuto API映射类适用场景AutoConfigNVEsmConfig读取/创建配置AutoModelNVEsmModel提取氨基酸级与序列级嵌入AutoModelForMaskedLMNVEsmForMaskedLM掩码氨基酸预测补全序列AutoModelForTokenClassificationNVEsmForTokenClassification逐 token 分类如二级结构预测1. 加载配置NVEsmConfigfrom transformers import AutoConfig config AutoConfig.from_pretrained(hf_mirrors/nvidia/esm2_t12_35M_UR50D) print(config.hidden_size) # 480 print(config.model_type) # nv_esm2. 加载基础模型NVEsmModelNVEsmModel 是纯编码器结构输出每个氨基酸的嵌入向量适合作为下游任务的特征提取器from transformers import AutoModel model AutoModel.from_pretrained(hf_mirrors/nvidia/esm2_t12_35M_UR50D)3. 加载掩码语言模型NVEsmForMaskedLM这是最常用的推理入口用于预测被mask遮挡的氨基酸。其实现细节位于 esm_nv.py前向传播在输出 logits 前会自动截断回原始vocab_sizefrom transformers import AutoModelForMaskedLM from transformers import AutoTokenizer tokenizer AutoTokenizer.from_pretrained(hf_mirrors/nvidia/esm2_t12_35M_UR50D) model AutoModelForMaskedLM.from_pretrained(hf_mirrors/nvidia/esm2_t12_35M_UR50D) sequence MQIFVKTLTGKTITLEVEPSmaskTIENVKAKIQDKEGIPPDQQRLIFAGKQLEDGRTLSDYNIQKESTLHLVLRLRGG inputs tokenizer(sequence, return_tensorspt) outputs model(**inputs) # outputs.logits 即为每个位置的氨基酸概率分布4. 加载分类模型NVEsmForTokenClassification用于蛋白质二级结构预测、功能位点标注等逐 token 任务实现见 esm_nv.pyfrom transformers import AutoModelForTokenClassification model AutoModelForTokenClassification.from_pretrained( hf_mirrors/nvidia/esm2_t12_35M_UR50D, num_labels8, # 例如 8 类二级结构标签 )快速上手推理三步走 ️第一步准备环境该模型依赖transformers建议 v5.x与 NVIDIAtransformer_engine库。若使用官方 NVIDIA Docker 容器可免去手动安装否则需按 TransformerEngine 官方文档安装。本项目可直接通过 GitCode 克隆获取全部文件git clone https://gitcode.com/hf_mirrors/nvidia/esm2_t12_35M_UR50D第二步加载模型模型权重保存在model.safetensors中tokenizer.json、vocab.txt提供分词支持配置由config.json管理无需额外下载。第三步推理import torch from transformers import AutoModelForMaskedLM, AutoTokenizer model_name hf_mirrors/nvidia/esm2_t12_35M_UR50D tokenizer AutoTokenizer.from_pretrained(model_name) model AutoModelForMaskedLM.from_pretrained(model_name) model.eval() seq MKTAYIAKQRQISFVKSHFSRQmaskERGLD inputs tokenizer(seq, return_tensorspt) with torch.no_grad(): logits model(**inputs).logits # 取掩码位置概率最高的氨基酸 mask_idx inputs[input_ids][0].tolist().index(tokenizer.mask_token_id) pred logits[0, mask_idx].argmax(dim-1).item() print(tokenizer.convert_ids_to_tokens([pred]))输入输出与使用注意事项 输入格式类型氨基酸序列字符串1D 文本如MQIFVKTLTGKTITLEVEPS长度限制单条序列最长 1022 个氨基酸超长会被自动截断对应max_position_embeddings1026含特殊 token词表20 种标准氨基酸 特殊 tokenmask、cls、eos、pad等共 33 个vocab_size33。输出格式每个氨基酸对应一个嵌入向量输出维度为[batch_size, seq_len, hidden_size]掩码模型额外输出logits维度为[batch_size, seq_len, vocab_size]。关键注意事项 ⚠️GPU 依赖模型针对 NVIDIA GPU 优化CPU 推理速度较慢数值精度由于 TransformerEngine 优化与原版 ESM-2 相比可能存在轻微数值差异属于正常现象仅支持旋转位置编码position_embedding_type必须为rotary否则初始化会直接报错见 esm_nv.py池化层默认关闭导出权重不含 pooler若需pooler_output需自行设置为True并准备好对应权重FP8/FP4 量化启用layer_precision时需配合对应的 recipe 参数否则报错。常见问题 FAQ Q1没有 GPU 能跑这个模型吗可以但速度会明显下降。建议使用支持 CUDA 的 NVIDIA GPUAmpere 及以上架构效果最佳。Q2为什么输出与原版 ESM-2 有微小差异这是 TransformerEngine 的融合算子带来的浮点精度差异属于预期行为不影响下游任务效果。Q3如何处理超长序列模型会自动截断到 1022 个氨基酸。更合理的做法是使用滑动窗口或按结构域切分序列后再分别推理。Q4如何微调模型推荐使用AutoModelForTokenClassification或AutoModelForMaskedLM作为基座配合labels参数传入监督信号损失计算已内置CrossEntropyLoss。总结 esm2_t12_35M_UR50D 通过 NVEsmConfig 新增的 TransformerEngine 参数与 AutoModel 无缝集成让你既能享受 ESM-2 强大的蛋白质建模能力又能获得 NVIDIA GPU 上的高性能加速。掌握attn_input_format、layer_precision、padded_vocab_size这几个核心参数你就能在推理速度、显存占用与精度之间自由调优。现在就去克隆仓库用一段蛋白质序列试试掩码预测吧【免费下载链接】esm2_t12_35M_UR50D项目地址: https://ai.gitcode.com/hf_mirrors/nvidia/esm2_t12_35M_UR50D创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考