🏔️
colabでkaggleのdatasetをマウントする
1. kaggleのdatasetのgcsのリンクを取得する
kaggleのnotebookで以下を実行する
from kaggle_datasets import KaggleDatasets
GCS_PATH = KaggleDatasets().get_gcs_path()
print(GCS_PATH)
notebookの作成は,マウントしたいデータセットのNew Notebookから作成する
(これはtimmの例)
開催中のコンペのdatasetをマウントしたい場合は,コンペのページからNew Notebookする
2. colabでマウントする
2.1. gcpの認証をする
from google.colab import auth
auth.authenticate_user()
2.2. gscfuseをインストールする
!echo "deb http://packages.cloud.google.com/apt gcsfuse-bionic main" > /etc/apt/sources.list.d/gcsfuse.list
!curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
!apt update
!apt install gcsfuse
Cloud Storage FUSE は、オープンソースの FUSE アダプタです。これにより、Linux または macOS システムに Cloud Storage バケットをファイル システムとしてマウントできます。
2.3. gcsのバケットをマウントする
! gcsfuse --implicit-dirs --limit-bytes-per-sec -1 --limit-ops-per-sec -1 ${BUCKET_NAME} ${マウントしたいパス}
- で取得したGCS_PATHは"gs://"で始まっているので,"gs://"以降のBUCKET_NAMEを指定するとうまくいった
GCS_PATH = "gs://" + BUCKET_NAME
GCS_PATHを指定した以下のコマンドではマウントできなかった
! gcsfuse ${GCS_PATH} ${マウントしたいパス}
3. ハマったこと
kaggleのdatasetは私の作ったバケットじゃないしな...と思って2.1のgcpの認証をしないでマウントしようとすると,
%Y/%m/%d %H:%M:%S.%f Using mount point: /content/hoge
%Y/%m/%d %H:%M:%S.%f Opening GCS connection...
%Y/%m/%d %H:%M:%S.%f Mounting file system "${BUCKET_NAME}"...
%Y/%m/%d %H:%M:%S.%f File system has been successfully mounted.
と出てマウント成功っぽく表示はされるが,
!ls /content/hoge
すると,
ls: reading directory '/content/hoge': Input/output error
と出てマウントできていなかった
かつ,gcsfsのpandasラッパーを使った以下のデータの読み込みは,gcpの認証なしでも可能だったので混乱した
!pip install fsspec
!pip install gcsfs
import pandas as pd
df = pd.read_csv(GCS_PATH + "hoge.csv")
4. 参考
Discussion
細かいですが以下typoです。
誤: BACKET_NAME
正: BUCKET_NAME
ご指摘ありがとうございます!修正しました!