You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MacOS上微调BERT做NER时遇多进程RuntimeError求助

解决方案

1. 严格规范__name__代码块范围

把所有实际执行的业务逻辑(包括数据加载、模型初始化、训练启动等)全部放到if __name__ == '__main__':代码块内,不要只单独添加freeze_support()(该方法仅针对Windows环境,MacOS无需使用)。示例代码结构:

import torch
from transformers import BertForTokenClassification, Trainer, TrainingArguments

# 工具函数、类定义等可放在代码块外
def load_ner_data():
    # 数据加载逻辑
    pass

def init_ner_model(num_labels):
    return BertForTokenClassification.from_pretrained("bert-base-chinese", num_labels=num_labels)

def main():
    # 所有执行入口逻辑都在这里
    dataset = load_ner_data()
    model = init_ner_model(num_labels=5)
    training_args = TrainingArguments(
        output_dir="./ner_results",
        per_device_train_batch_size=8,
        # 其他训练参数
    )
    trainer = Trainer(
        model=model,
        args=training_args,
        train_dataset=dataset["train"],
        eval_dataset=dataset["val"]
    )
    trainer.train()

if __name__ == '__main__':
    main()

2. 禁用多进程数据加载

MacOS的fork机制与VS Code终端环境存在兼容性问题,建议将数据加载的多进程参数设为0:

  • 若使用DataLoader,设置num_workers=0
  • 若使用transformers的Trainer,在TrainingArguments中添加dataloader_num_workers=0

示例调整:

training_args = TrainingArguments(
    output_dir="./ner_results",
    per_device_train_batch_size=8,
    dataloader_num_workers=0,  # 关键:关闭多进程数据加载
    # 其他训练参数
)

3. 确认VS Code解释器与依赖环境匹配

  • 按Cmd+Shift+P打开命令面板,输入Python: Select Interpreter,选中你安装了transformers、torch等依赖的Python 3.10环境
  • 执行pip list确认所有所需依赖(transformers、datasets、torch等)都安装在当前选中的环境中

4. 尝试在系统原生终端运行

如果VS Code终端仍有问题,直接打开Mac系统终端,切换到代码目录后运行脚本:

cd /你的代码所在路径
python3.10 你的脚本文件名.py

内容的提问来源于stack exchange,提问作者Filipe Donatti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 05:40:42