惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Recorded Future
Recorded Future
C
Cyber Attacks, Cyber Crime and Cyber Security
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Scott Helme
Scott Helme
Cyberwarzone
Cyberwarzone
C
CERT Recently Published Vulnerability Notes
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
P
Palo Alto Networks Blog
Google Online Security Blog
Google Online Security Blog
Security Archives - TechRepublic
Security Archives - TechRepublic
WordPress大学
WordPress大学
博客园 - 聂微东
L
LINUX DO - 最新话题
月光博客
月光博客
小众软件
小众软件
T
Troy Hunt's Blog
A
Arctic Wolf
量子位
I
Intezer
大猫的无限游戏
大猫的无限游戏
T
Tailwind CSS Blog
S
Schneier on Security
Schneier on Security
Schneier on Security
NISL@THU
NISL@THU
T
Threat Research - Cisco Blogs
TaoSecurity Blog
TaoSecurity Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园_首页
有赞技术团队
有赞技术团队
N
News and Events Feed by Topic
美团技术团队
The Cloudflare Blog
P
Privacy International News Feed
S
Security Affairs
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
G
GRAHAM CLULEY
N
News | PayPal Newsroom
Apple Machine Learning Research
Apple Machine Learning Research
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
L
LINUX DO - 热门话题
V
Vulnerabilities – Threatpost
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
C
CXSECURITY Database RSS Feed - CXSecurity.com
宝玉的分享
宝玉的分享
Application and Cybersecurity Blog
Application and Cybersecurity Blog
IT之家
IT之家
Hacker News: Ask HN
Hacker News: Ask HN
雷峰网
雷峰网

阿尔的代码屋 | 全栈技术笔记

在 Android Termux 环境下安装 Hermes Agent 的踩坑与完美解决实践 开发日志| 阿尔的代码屋 VS Code 连接 WSL 精确每 10 分钟掉线 排坑笔记 | 阿尔的代码屋 Android 模拟器代理联网与 No Internet WiFi 锁死排坑笔记 | 阿尔的代码屋 [object Object] typing_extensions 有用(四):使用 TypeIs 替代危险的 cast,做最严谨的类型收窄 | 阿尔的代码屋 GoRouter 结合 Isar 运行 Widget 测试并发/粘性线程死锁卡死排坑笔记 | 阿尔的代码屋 typing_extensions 有用(三):使用 Unpack 结合 TypedDict 给 **kwargs 装上透视眼 | 阿尔的代码屋 typing_extensions 有用(二):使用 @override 打造重构代码时的“防呆神器” | 阿尔的代码屋 Flutter 并发测试踩坑实录 - IsarCore 动态库下载冲突与 Widget 测试 HTTP 拦截全链路解决 | 阿尔的代码屋 typing_extensions 有用(一):使用 Self 终结继承时的类型推断灾难 | 阿尔的代码屋 基于 Cloudflare Pages 的纯前端 WebAssembly 应用自动化部署实践 | 开发日志 | 阿尔的代码屋 基于 VS Code 远程开发的 GPU Docker 容器自动清理方案实践 开发日志| 阿尔的代码屋 Patrol iOS 集成测试排坑实录 - xcodebuild exit code 70 全链路解决 | 阿尔的代码屋 Flutter E2E 测试从 integration_test 迁移到 Patrol - 实践笔记 | 阿尔的代码屋 Linux/macOS 下 micromamba 报错 Shard Index not available 与极度卡顿 排坑笔记 | 阿尔的代码屋 critical libmamba Shell not initialized micromamba报错 subprocess 无法修改父 Shell - 排坑笔记 | 阿尔的代码屋 VS Code Remote-SSH: 彻底告别重复输入密码 - 排坑笔记 | 阿尔的代码屋 Git 报警: inexact rename detection was skipped - 排坑笔记 | 阿尔的代码屋 解决群晖 NAS SSL 证书自动部署难题 | 阿尔的代码屋 Windows 下 Git error: fatal: refusing to work with credential missing host field - 排坑笔记 | 阿尔的代码屋 VS Code 调试 Python 第三方库源码的配置 - 开发技巧| 阿尔的代码屋 VS Code Remote Tunnels本地连接调试Kaggle GPU - 开发技巧| 阿尔的代码屋 Windows下Git error: open(xxxx) Filename too long - 排坑笔记 | 阿尔的代码屋 记录2026年零预约港卡开户实录避坑 告别孤岛:拥抱 MCP 协议,为大模型打造标准“USB 接口” - 大模型实战 08 完结篇 | 阿尔的代码屋 从 ReAct 到 Workflow:基于云端 API 构建事件驱动的智能体 - 大模型实战 07 额外篇 | 阿尔的代码屋 基于 LlamaIndex ReAct 框架手搓全自动博客监控 Agent - 大模型实战 07 | 阿尔的代码屋 在 Kaggle 上用 Unsloth 极速微调 Qwen3 - 大模型实战 06 | 阿尔的代码屋 大模型微调实战详解 - 大模型实战 05 | 阿尔的代码屋 基于 ChromaDB 打造工程级 RAG 系统 - 大模型实战 04 | 阿尔的代码屋 拆解 Transformers 原理与图解 - 大模型实战 03 | 阿尔的代码屋 云端炼丹房:Google Colab 免费 GPU 上手指南 - 大模型实战 03预备 | 阿尔的代码屋 Open WebUI 部署与 RAG 实战 - 大模型实战 02 | 阿尔的代码屋
云端炼丹房 2:Kaggle 上手指南 - 大模型实战 03预备 | 阿尔的代码屋
Algieba · 2026-01-22 · via 阿尔的代码屋 | 全栈技术笔记

核心摘要 (TL;DR)

  • 痛点:Colab 免费额度耗尽,或者单张 T4 显存(16GB)无法满足更大参数模型的微调需求。
  • 方案:利用 Kaggle 提供的 每周 30 小时免费双路 T4 GPU (T4 x2) 算力。
  • 技巧:通过 手机号验证 解锁联网权限,利用 Kaggle Datasets 实现模型的持久化存储。
  • 目标:作为 Colab 的强力替补(甚至上位),搭建备用云端炼丹环境。

前言

上一篇中,本来想直接写到Google Colab的大模型推理脚本,让各位友人们感受一下在全参数7B模型的能力,但是折腾了很久,Colab读driver老是失败,当我想直接下载到云端主机而不是driver的时候,GPU的额度已经耗尽。索性今天在Kaggle的这篇博文中来讲,应该之后也主要用Kaggle来进行云端开发,毕竟Colab额度少,还得盯着,长时间不看会断掉连接。

好,我们来先介绍一下今天的主角,Google 旗下的另一个神器:Kaggle。Colab如果说其本职就是模型训练,那Kaggle本身其实是一个数据科学的竞赛平台,毕竟是数据科学竞赛嘛,那自然得需要算力资源,Kaggle为了方便,也发挥了谷歌大善人的优良品质,免费提供了大方的计算资源。跟Colab对比起来,Kaggle的优势就是,更稳定,更方便,资源给的额度更多。

1. Kaggle Notebooks 核心概念

Kaggle 的核心编程环境叫 Kernels (现在统称 Notebooks),不用害怕,诶,它就是我们昨儿刚认识的熟人云端服务器版Jupyter Notebook,但是和Colab不太相同的是Kaggle的文件结构,它明显得区分了输入区域,输出区域,暂存区域, 这是也我们刚上手容易懵的地方:

  • Input (/kaggle/input)只读区域。这里存放咱们上传的数据集或挂载的模型。读取速度极快,但无法写入。
  • Output (/kaggle/working)可读写区域。这是咱们的主工作区,代码运行结果、下载的模型必须存在这里。但注意,重启 Session 后,这里的内容如果不保存为 Dataset 也会消失。
  • Temp (/kaggle/temp)临时暂存区。空间较大(只有当前会话有效),适合下载解压临时的大文件。

2.1 注册与关键验证 (必做)

我们新用户登录创建notebook后会发现,我们没有硬件加速设备可选。

根本原因就是咱们没有进行手机验证,哈哈哈,可以理解,毕竟本身kaggle就不用绑卡,加上手机验证可能会杜绝掉一大部分计算资源滥用。

  1. 访问 Kaggle 官网 并注册账号。
  2. 关键步骤:点击右上角头像 -> Settings
  3. 找到 Phone Verification(手机验证)。必须完成这一步,否则无法开启 GPU 和 Internet(联网)功能。

认证完毕就可以使用GPU资源了

如果继续做了Identity verification之后,可以使用TPU资源,不过我们暂时用不到,目前的GPU资源已经够咱们大玩一场了。

2.2 创建笔记本

  1. 点击左侧菜单栏的 Create -> New Notebook
  2. 进入编辑器界面,咱们会发现界面布局比 Colab 更加紧凑且功能分区明确。

2.3 界面布局速览

注意,

  1. 和Colab不一样的是,Kaggle的文件名没有后缀,不用加ipynb后缀
  2. 咱们的硬件加速(GPU/TPU计算资源)被放到了顶部菜单栏的Settings中的accelerator中了
  3. 和Colab不同,因为Kaggle是为竞赛服务,很多竞赛是要求模型不联网的,所以我们在训练模型的时候,需要手动开启网络,也在顶部菜单栏的Settings中,点击Turn On Internet打开即可联网下载模型或者数据集。
  4. 密钥管理被放到了顶部菜单栏的Add-ons下了

3. 环境配置:开启双显卡与联网

Kaggle 默认环境是 CPU断网 的。我们需要手动“解除封印”。

3.1 开启联网 (Internet On)

可以按照刚才说的在顶部菜单栏打开,也可以在右侧边栏的 Session Options 中,找到 Internet 选项。将开关拨到 On
注意:如果没有手机验证,此选项为灰色不可用。

3.2 开启 GPU 加速 (T4 x2)

  1. 在右侧边栏找到 Accelerator

  2. 下拉选择 GPU T4 x2

    • GPU T4 x2:两张显卡,约 30GB 显存,适合大模型推理和微调。
    • GPU P100:单张旧架构卡,虽然速度快但显存仅 16GB,通常不推荐。
  3. 开启后,顶部会显示 Session StorageGPU Quota(每周 30 小时额度,通常周六刷新)。
    点击自己的头像,可以看见自己的额度GPU Quata

3.3 验证双卡环境

输入并运行以下代码,确认我们是否真的拥有了两张显卡:

1
!nvidia-smi

咱们应当能看到 两张 Tesla T4 显卡的列表 (GPU 0 和 GPU 1)。

4. 实战:下载并运行大模型

在 Kaggle 上使用模型主要有两种“流派”:代码下载派原生挂载派

方式一:利用 HuggingFace CLI 下载 (工程化推荐)

这种方式最灵活,适合需要精确控制模型版本的情况。由于 Kaggle 没有 Google Drive,我们将模型下载到 /kaggle/working/ 目录。

步骤 1:安装与配置

1
2

!pip install -U transformers huggingface_hub accelerate bitsandbytes

点击顶部菜单 Add-ons -> Secrets,添加 HF_TOKEN(咱们的 HuggingFace 访问令牌)。

步骤 2:下载脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import os
from huggingface_hub import login, snapshot_download
from kaggle_secrets import UserSecretsClient


user_secrets = UserSecretsClient()
hf_token = user_secrets.get_secret("HF_TOKEN")
login(token=hf_token)


model_dir = "/kaggle/working/model_cache"
os.makedirs(model_dir, exist_ok=True)


model_id = "Qwen/Qwen2.5-7B-Instruct"
print(f"开始下载 {model_id} ...")


snapshot_download(
repo_id=model_id,
local_dir=model_dir,
local_dir_use_symlinks=False,
token=hf_token
)

print("下载完成!")

方式二:Add Input (Kaggle 原生方式)

这是 Kaggle 最强大的功能。咱们可以直接在网页端搜索现成的模型,像挂载 U 盘一样挂载进来,不消耗下载流量和时间

  1. 点击右侧边栏的 Add Input
  2. 选择 Models 标签页。
  3. 搜索 Qwen2.5
  4. 点击 + 号添加。
  5. 选择FRAMEWORK选择Transformers架构, VARIATION选择7b-instruct, 之后的博文会跟各位友人解释这些参数的差别
  6. 模型会直接出现在 /kaggle/input/ 目录下(只读),路径通常长得像 /kaggle/input/qwen2.5/transformers/7b-instruct/1

5. 加载模型与双卡推理

拥有双卡 T4 后,加载模型时有一个关键参数:device_map="auto"。它会自动将模型切分到两张显卡上,从而让我们能运行更大的模型。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM




model_path = "/kaggle/working/model_cache"

print("正在加载模型 (双卡模式)...")

tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)


model = AutoModelForCausalLM.from_pretrained(
model_path,
device_map="auto",
torch_dtype=torch.float16,
trust_remote_code=True
)

print(f"模型加载成功!显存分布: {model.hf_device_map}")


prompt = "咱们好,请用一句话形容 Kaggle 的双 T4 显卡有多香?"
messages = [{"role": "user", "content": prompt}]
text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
inputs = tokenizer([text], return_tensors="pt").to(model.device)

with torch.no_grad():
generated_ids = model.generate(**inputs, max_new_tokens=200)

response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
print(f"Qwen: {response.split('assistant')[-1].strip()}")

6. 进阶:如何持久化保存?(Save Version)

Kaggle 没有 Google Drive,那怎么保存下载好的模型或训练结果呢?

答案:把 Output 变成 Dataset。

  1. 当咱们的代码运行完毕,模型保存在 /kaggle/working 后。

  2. 点击右上角的 Save Version 按钮。

  3. 选择 Save & Run All (重新跑一遍),必须等到下方弹出的保存任务完成。

  4. 保存成功后,咱们可以去主页的Your Work点击刚才的Notebook,进入Output 标签页里,点击最右边的Output的三个点,然后点击 New Dataset

  5. 这样,我们刚才的模型就变成了一个可以在其他 Notebook 里直接 Add Input 的数据集了!

PS:除开自训练的特殊模型和一些在Input找不到的模型,最好都直接使用Input导入更为快捷

7. 常见问题 (Q&A)

Q: Colab 和 Kaggle 我该选谁?
A:

  • Colab: 适合快速实验、挂载 Google Drive 方便。但 T4 只有一张,且最近封号较严。
  • Kaggle: 适合需要大显存(T4 x2)的任务。环境更稳定,且有 30 小时/周的明确额度,不用担心用到一半被踢下线。

Q: 为什么我的代码报错 Internet connection is closed
A: 这是一个经典错误。请检查右侧边栏的 Internet 开关是否为 On。如果开关是灰色的,请检查是否完成了账号的 手机号验证

Q: /kaggle/working 里的文件重启后还有吗?
A: 没有了。Kaggle 的 Session 也是临时的。如果需要持久化,请务必使用 Save Version 功能将其保存为 Dataset,或者在代码最后加一段上传到 HuggingFace Hub 的代码。