最近沉迷于搞一些机器学习的小项目,经常要去 Kaggle 上扒拉数据集。但是说实话,Kaggle 的下载体验真的让人头大,几兆的小文件还能忍,一旦遇到几百兆甚至几个 G 的数据集,那个下载速度简直慢到怀疑人生,动不动就断连,或者只有几十 KB/s 的速度。

很多刚入门的朋友估计都遇到过这个糟心事:明明数据集很棒,但因为下载太慢直接劝退。今天就来给大家分享一下我是如何解决这个问题的,实测有效,希望能帮到同样被折磨的各位。

告别网页直下,拥抱命令行

首先,最基础也是最重要的一步:不要直接在网页上点击下载按钮。浏览器直连 Kaggle 的服务器,对于国内网络环境来说非常不友好,而且没有断点续传功能,一旦断了还得重来。

我们应该使用 Kaggle 官方命令行工具 (CLI)。这不仅是大神们的标准操作,更是实现加速下载的基础。

第一步:安装并配置 kaggle-cli

Kaggle Account 页面中的 API 设置部分,展示 Create New API Token 按钮

在 Kaggle 账户设置中找到 API 部分并创建 Token

如果你是 Python 用户(搞 ML 的应该都是吧),安装过程非常简单,一行命令搞定:

pip install kaggle

安装完成后,最重要的一步是获取 API Token。

  1. 登录 Kaggle 官网。
  2. 点击你的头像,进入 Account 设置。
  3. 滚动到 API 部分,点击 "Create New API Token"。
  4. 这会下载一个 kaggle.json 文件。

接下来,把这个文件放到正确的位置:

  • Windows: C:\Users\<你的用户名>\.kaggle\kaggle.json
  • Linux/Mac: ~/.kaggle/kaggle.json

记得把 <你的用户名> 换成你自己的。如果是 Linux 或 Mac,为了安全起见,建议修改一下文件权限:

chmod 600 ~/.kaggle/kaggle.json

第二步:寻找加速镜像(关键姿势)

配置好工具后,直接输入命令 kaggle datasets download -d <数据集名称> 可能还是很慢,因为它默认还是去连官方服务器。这时候就需要用点“魔法”了。

虽然不能乱用工具,但我们可以利用一些开源社区维护的 Kaggle 数据集代理镜像。这里有一个非常实用的思路:修改环境变量,让 CLI 走镜像通道。

终端窗口展示使用 aria2c 命令进行多线程下载代码

使用 aria2 开启多线程加速下载

常用的一个方法是将下载请求指向一个速度更快的竞赛文件代理站。在终端里执行以下命令(Linux/Mac):

export KAGGLE_PROXY=<你的代理地址>

如果你不想折腾代理地址,或者手里没有现成的节点,这里还有一个更接地气的方案:

利用某些大佬搭建的专门针对 Kaggle Competition 文件的 CDN 加速服务。由于具体的镜像地址可能会随时间变动,这里建议大家在 GitHub 上搜索关键词 "Kaggle dataset mirror" 或者 "Kaggle 加速",通常能找到还在维护的镜像站地址。

假设你找到了一个可用的镜像地址(例如 https://kaggle.kube7s.com),你可以尝试直接构造链接下载,或者配置工具指向该地址。虽然 CLI 直接配置第三方镜像支持不一,但你可以利用 wgetaria2 配合 Cookie 进行下载。

第三步:利用 aria2 开多线程下载

如果我们拿到了带认证的下载链接(可以通过浏览器的开发者工具抓包,或者利用 CLI 的 -c--unzip 参数观察请求),直接扔给 aria2 或者 IDM 这种多线程下载工具,效果会好很多。

假设你已经有了直链,可以使用 aria2c 进行多线程下载(推荐安装 aria2):

aria2c -x 16 -s 16 -k 1M "你的下载链接"
  • -x 16: 最大连接数 16
  • -s 16: 单任务最大线程数 16
  • -k 1M: 分块大小为 1MB

这种方法配合代理效果拔群,几百兆的文件通常能在几分钟内搞定,而且支持断点续传。

第四步:使用 Colab 或在线环境作为中转

如果本地下载实在太慢,还有一个曲线救国的办法。

直接在 Google Colab 或者其他带有高速国际带宽的在线 Notebook 环境里下载。

  1. 在 Colab 的单元格里运行:
    !kaggle datasets download -d <数据集名称> -p /content/drive/MyDrive/
    
  2. 等 Colab 把文件下载到它的云端磁盘里(Colab 的带宽通常很快)。
  3. 最后再把文件从 Google Drive 面币下载回来,或者直接挂载 Drive 到本地使用。

虽然多了一步,但往往比在本地硬扛龟速要快得多。

总结一下

遇到 Kaggle 下载慢,别硬撑浏览器。

  1. 上工具:装好 kaggle 命令行库。
  2. 找路子:配置好 API Token,利用环境变量挂代理,或者寻找第三方镜像站。
  3. 多线程:配合 aria2IDM 实现多线程下载。

希望这几个小技巧能帮大家节省时间,把精力更多地花在炼丹而不是下载数据上。如果大家有其他私藏的加速神器,欢迎在评论区交流呀!

标签: none

评论已关闭