LoginSignup
5
7

【NVIDIA DLI Teaching Kits】Google Colaboratory上でcuDFを動かすまで / 1章-labs-

Last updated at Posted at 2022-10-09

概要

NVIDIA DLI教育キットでは、NVIDIAさんが提供するクラウド上の学習環境を使うことができる。
また、PCにGPUが乗っている方であれば、ローカル環境においてもキットを使える。

そうはいっても、この記事に辿り着いたみなさんの大半はローカル環境を汚したくない部類の人間だと私は勝手に思っている。

例えるならば、子供の落書きで家の壁を汚されるより、ラウンドワンでカラーボールを
投げさせておいた方がよっぽど素敵で楽しい。私もその部類に含まれると思う。

この記事は、そんな皆様がColab上でサクッとキットを利用できるように書きました。

ところでタイトルのcuDFとはなんぞや?

本キットの第1章-labs-では、cuDFというpandasのGPU版のようなモジュールが登場する。
pandasとは多少異なる部分があるものの、GPU上で走らせてデータフレームを処理するため、
pandasの数倍〜数十倍の演算速度が期待できる。つまるところ、処理が爆速なライブラリである。
とくに、テーブル同士の結合が得意らしい。

Google_Colaboratoryについて

Googleが提供する、ブラウザー上でpythonを記述・実行できる便利なサービス。
初学者向け、インストールが必要ない点が魅力的。Googleアカウントを作成すれば誰でも使える。
ただ、cuDFのような外部モジュールの使用にあたってはこちらで環境構築をしないといけない。
面倒だねぇ。。ただ、Googleさんのお部屋を好き勝手に汚せるからむしろ楽しいかも....

無駄話もこの辺にしてRAPIDSをColabに入れてみよう。

目次

  • RAPIDSのインストールについて
  • ColabノートブックにRAPIDSを入れる
  • cuDFを使ってみよう

RAPIDSのインストールについて

!python cudf.py
import cudf

ColabでcuDFを使うにはRAPIDSのインストールが必要になる。
しかし、本キット lecture_01のlabsはその過程をすっ飛ばし、いきなりcudfの説明に入っている。
スクリーンショット 2022-10-06 2.15.15.png
なんと不親切.....

初心者に環境構築を強いるとは少し酷ではないかNVIDIAさん。
そんなわけで環境構築を進めていこう。

ColabノートブックにRAPIDSを入れる

1. ググる

スマホやPCという文明の利器を所持しているならば、探し物をするときにはまず「ググる」を使おう。
"rapids colab notebook"で検索すると、大体一番上に公式のノートブックが出てくる。
このリンク先に飛ぶと、rapids環境構築用のノートブックが勝手に開いてくれる。
スクリーンショット 2022-10-09 23.19.38.png
2. ドライブにコピー

共有されているノートブック上で環境構築を行なっても、あくまでそのノートブック上だけで
rapidsが使えるようになるだけで、自分のドライブにはなんの変化も起きない。

そこで、ノートブックをドライブにコピーし、自分のドライブでもrapidsを利用できるようにする。
たとえば、こんな感じでわかりやすい名前をつけてドライブにぶち込もう。
スクリーンショット 2022-10-09 23.30.20.png
3. ノートブックの内容を確認する。

"なんやワレ! 英語なんて読めへんぞ!" と悪態をつく前に、
知らない単語が出てきたらとりあえず辞書か何かでその単語の意味をみなさんには
調べてほしい。調べてね?

・Enviromental(環境の)
・Sanity(健全さ)
・Check(チェック)

読み通してみると、環境健全性チェックという訳になることがおおまかに理解できるだろう。
とはいったもののこれはそんな大層なものではなく、Google_Colab特有のGPUガチャによって
用意されたGPUが何なのかを確認するためのセルである。
スクリーンショット 2022-10-09 23.58.13.png
今回はTeslaT4というGPUが割り当てられたようだ。GPUガチャの中では当たりの部類か。
割り当てられるGPUは(K80)P4 < T4 < P100の順で性能が良い。ハズレのGPUを引いたとしても、
GPUを貸してくれるGoogleさんに感謝の念を伝えよう。

4. Setup以下

!nvidia-smiセクションを実行したあとに次のセルを実行すると、
module not found: pynvml というメッセージが表示されると思う。

これは環境にpynvmlというモジュールがないよ!だからセルを実行できないよ!
というpython側からのお叱りである。これを解決するためにはpipコマンドを用いて、
pynvml モジュールをインストールしてあげればよい。

!python pynvml.py
!pip install pynvml

インストール後に再度セルを実行し、以下が表示されたら次のセルに進もう。

!python gpu_check.py
***********************************************************************
Woo! Your instance has the right kind of GPU, a Tesla T4!
***********************************************************************

<だいたいこんな感じ>
・1. セルを追加し、!pip install pynvmlをコピペする。
・2. 次のセルを実行する。
・3. 上のメッセージが表示されたら次に進もう!

次のセルでは、Colabの環境をアップデートしたのち、カーネルを更新する。
何を言っているかがわからない場合は、とりあえずrapidsを使うための呪文だとここでは
認識しておこう。のちに勉強すればよい。

また、ここではプロセスを終了させるためにos._exit()を用いているため、
セッションが通常終了する前にクラッシュする。

!python update_colab.py
!bash rapidsai-csp-utils/colab/update_gcc.sh
import os
os._exit(00)

こんな感じでセル実行のボタンが赤く血に染まるが、とくに問題はない、次のセルを実行しよう。
スクリーンショット 2022-10-10 0.33.50.png
このセルでは、先ほどと同じようにセッションがクラッシュする。説明は上記と同様のため省略する。
クラッシュしたら次のセルを実行しよう。ちなみにこのセルではCondaColabをインストールしている。

!python install_colab.py
import condacolab
condacolab.install()

このセルはCondaColabがちゃんとColabに収まったかどうかを確認するセルである。

!python check_colab.py
import condacolab
condacolab.check()
--------------------------------------------------------------------------------------
#以下のメッセージが表示されたら次に進もう!
#✨🍰✨ Everything looks OK! <---絵文字もコードと合わせて表現できるのね。

このセルのセッションが終了したら、ようやくColabでRAPIDSおよびその提供モジュールであるcuDFが
使えるようになる。大体15分ほど待たされるので、その間音楽を聴いたりして好きに過ごしてね。

!python install_rapids.py
!python rapidsai-csp-utils/colab/install_rapids.py stable
import os
os.environ['NUMBAPRO_NVVM'] = '/usr/local/cuda/nvvm/lib64/libnvvm.so'
os.environ['NUMBAPRO_LIBDEVICE'] = '/usr/local/cuda/nvvm/libdevice/'
os.environ['CONDA_PREFIX'] = '/usr/local'

終わり! おしまい!
スクリーンショット 2022-10-10 1.11.26.png

cuDFを使ってみよう

ようやくcuDFが使えるので、さっそくimportして使ってみよう。

!python cudf.py
import cudf

importが完了したあと、cudfデータフレームを作成し、変数gdfに渡す。
dataframe2.pyでは、データフレームgdfに新たな列(index,value)を追加し、値を格納している。
最後に、gdfと記述し、現在のデータフレームの構成を確認する。

!python dataframe.py
gdf = cudf.DataFrame()
#df = pandas.DataFrame() <---挙動はpandasのそれと同じ。
!python dataframe2.py
#creates a column named 'index' with the values 0, 1, 2, 3, 4
gdf['index'] = [0, 1, 2, 3, 4]

#creates a column named 'value' with the values 10, 20, 30, 40, 50
gdf['value'] = [10, 20, 30, 40, 50]

#displays the current cudf dataframe
gdf

やったね! データフレームが表示されたよ。
スクリーンショット 2022-10-10 1.26.57.png

最後までお読みいただきありがとうございます。

5
7
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
7