はじめに
今回、初投稿ということで
「KaggleをGoogleColaboratory上で実行したら躓いた話」をしたいと思います。
この記事が、私のようなKaggle初心者の助けになれば幸いです。
Kaggleとは
Kaggleは、データサイエンスおよび機械学習のコンペティションプラットフォームです。
Kaggle(https://www.kaggle.com/)
データサイエンティストや機械学習エンジニアがデータセットを提供し、解析や予測モデルの作成に取り組むことができます。ユーザーは共同でプロジェクトに参加したり、スコアを競い合ったりしながら、問題解決能力を向上させることができます。
また、Kaggleは知識共有のプラットフォームとしても機能し、豊富なデータセットやノートブック、コンペのソリューションなどが利用可能です。
現在(2023/08/01)、私は以下のコンペに参加しています。
Google Research - Identify Contrails to Reduce Global Warming
このコンペの概要は以下になります。
飛行機雲は航空機の排気から生じる氷の結晶の雲で、地球温暖化に寄与します。研究者はモデルでコントレイルの発生と温暖化を予測し、衛星画像で検証したいと考えています。この競技は飛行機雲モデルの精度向上を目指し、航空会社が飛行機雲の発生を避けて気候変動の影響を減らす手助けをします。飛行機雲の発生回避は航空産業にとって持続可能な解決策の1つであり、確実な検証によりパイロットと航空会社に信頼性のある対策を提供します。
概要を理解した後は、早速モデルの開発をしていきます。
今回は初めてのsubmitということもあり、先駆者のコードからデータの前処理や学習モデル、提出方法などを学んでから実装に移りました。
実装にはGithubとの連携を考えて、GoogleColaboratoryで行うことにしました。
(この時点では面倒でVScodeにGPUの設定をしていませんでした。初めからVScodeで環境を構築していれば…)
GoogleColaboratoryとは
Google Colaboratory(通称:Google Colab)は、Googleが提供するクラウドベースのJupyterノートブック環境です。
無料で利用でき、Pythonを含む複数のプログラミング言語をサポートしています。データサイエンスや機械学習のタスクを実行し、GPUやTPUなどの高性能なリソースを利用して、共同編集や共有も容易に行えます。
ローカル環境に高性能なCPUやGPUがない人はぜひ利用してみてください。
加えて、Git-hubとの連携も数十秒で完了します。
Kaggleなどのデータの加工や、モデルの検証を繰り返し行う場合は、バージョン管理が容易なGit-hubと連携することをお勧めします。
問題
Google ColaboとGithubと連携して、早速モデルの開発に身を乗り出しました。
どうやら、KaggleにてデータセットをダウンロードできるAPIが提供されているとのこと。
以下のブログを参考にして、KaggleからGoogle Colaboにデータセットをダウンロードしました。
しかし、何時までたっても処理が終わりません。
これはおかしいと思い、処理結果を見ると
残り時間1時間22分???
どうやら、私が住んでいる学生寮の底辺Wi-Fiが主な原因のようです。
他にも、今回のコンペで提供されるデータセットの大部分がRGBの画像ということもあり、データ量が膨大になっていると考えられます。
これまずいと思い、対策手段を調べていると
GoogleColabは90分、もしくは12時間経過するとランタイムが強制的に終了する
という追い打ちをかけるような情報を発見しました。
このダウンロード速度でも比較的速い方なので、酷いときはダウンロードだけで
半日が終わるなんてことも十分あり得ます。
例え、データセットをダウンロードしたとしても、モデルの学習時にランタイムが終了しては意味がありません。
上記の理由から、KaggleでGoogle Colaboratoryの使用を中止することにしました。
最後に
Kaggleのデータセットはtitanicなどのテーブルデータから、今回のような画像データや音声データなどデータの種類は多岐にわたり、それに応じてデータ量も変化します。
そのため、住んでいる場所の回線の性能が悪いと、今回のような事態が発生してしまいます。
これまで、E資格の提出課題や大学の授業などでAnacondaばかりを使用していたこともあり
環境構築とは無縁の生活を送っていましたが、そのツケが回ってきたように思えます。
幸い、回線以外のローカル環境は悪くない性能なので、大人しくHDDにデータセットをダウンロードしてVScodeでモデルを実行したいと思います。