pyTorch框架
✅ 解决方案:将模型和分词器打包为本地文件使用
你需要在训练阶段就把模型和 tokenizer 下载到本地,并在推理(提交)代码中 从本地加载。
🔧 操作步骤如下:
✅ 第一步:在本地或 notebook 中下载模型和 tokenizer
在 自己的机器上运行以下代码,将 tokenizer 和模型保存到本地文件夹中,例如 ./bert-base-uncased
:
from transformers import BertTokenizer, BertModel
# 下载并保存
model_name = "bert-base-uncased"
tokenizer = BertTokenizer.from_pretrained(model_name)
model = BertModel.from_pretrained(model_name)
tokenizer.save_pretrained("./bert-base-uncased")
model.save_pretrained("./bert-base-uncased")
这将创建一个目录 ./bert-base-uncased/
,里面包含:
config.json
pytorch_model.bin
vocab.txt
tokenizer_config.json
等
✅ 第二步:将 bert-base-uncased/
文件夹上传到 Kaggle
- 在 Kaggle 上的 notebook 项目中,点击左侧 “Add data” → “Upload” 上传整个
bert-base-uncased
目录为一个 Dataset。 - 上传完成后,Kaggle 会给你一个路径,例如
/kaggle/input/bert-base-uncased/
。
✅ 第三步:在推理代码中从本地加载
from transformers import BertTokenizer, BertModel
# 从本地路径加载 tokenizer 和 model
tokenizer = BertTokenizer.from_pretrained("/kaggle/input/bert-base-uncased")
model = BertModel.from_pretrained("/kaggle/input/bert-base-uncased")
这样你就不再依赖联网资源了,提交代码不会报错。
✅ 提交建议
- 保证你的提交脚本中不要含有任何 from_pretrained(‘bert-base-uncased’) 网络请求
- 你的
.py
脚本或 notebook 要与上传的模型目录配合使用
TensorFlow框架
如果使用的是 TensorFlow 框架,那么需要使用 transformers
库中 TensorFlow 版本的 BERT 模型 和 BertTokenizer
。下面是如何下载并保存模型的步骤,适用于 Kaggle 无网络环境。
✅ 第一步:下载并保存 bert-base-uncased
模型(TensorFlow 版本)
from transformers import BertTokenizer, TFBertModel
# 模型名称
model_name = 'bert-base-uncased'
# 下载 tokenizer 和 TensorFlow 模型
tokenizer = BertTokenizer.from_pretrained(model_name)
model = TFBertModel.from_pretrained(model_name)
# 保存到本地目录
save_directory = './bert-base-uncased'
tokenizer.save_pretrained(save_directory)
model.save_pretrained(save_directory)
这一步会在本地创建一个包含以下内容的文件夹 bert-base-uncased/
:
bert-base-uncased/
├── config.json
├── tf_model.h5 ← TensorFlow 模型
├── vocab.txt
├── tokenizer_config.json
├── special_tokens_map.json
✅ 第二步:上传到 Kaggle
- 将这个
bert-base-uncased/
文件夹压缩为.zip
- 上传到你的 Kaggle Dataset(点击 “Add data” → “Upload”)
- 添加这个 Dataset 到你的 Kaggle notebook 或提交脚本
- 上传后 Kaggle 会给你一个类似路径
/kaggle/input/bert-base-uncased/
(根据你上传命名)
✅ 第三步:在提交脚本中加载本地模型
from transformers import BertTokenizer, TFBertModel
# 使用本地路径加载
model_path = '/kaggle/input/bert-base-uncased'
tokenizer = BertTokenizer.from_pretrained(model_path)
model = TFBertModel.from_pretrained(model_path)
🔒 小结:避免联网的方法
组件 | 下载方式 | Kaggle 中使用方式 |
---|---|---|
Tokenizer | BertTokenizer.from_pretrained | from_pretrained('/kaggle/input/...') |
模型(TF) | TFBertModel.from_pretrained | from_pretrained('/kaggle/input/...') |