俵言

しがない社会人が書く、勉強とかのこと。最近は機械学習や kaggle 関連がメイン。

Kaggle Tokyo Meetup 2023 参加記

この記事は Kaggle Advent Calendar 2023 の2日目の記事です。

帰ってきた!Kaggle Tokyo Meetup!

connpass.com

コロナ禍で2019年以来開催できなかった Kaggle Tokyo Meetup が約4年半ぶりに開催されました!この間に幾人もの方が Kaggle を始め、あるいは Kaggle を去り、また幾人もの方が tier を上げたことでしょう。 (僕は Master にはなれたものの未だに GM になれず...*1 )

2か月前に行われた関東Kaggler会と同様に本当に久々に行われたオンサイトイベントであり、幸運にも参加することができました。非常に楽しくまた学びのある機会だったので、振り返りも兼ねて参加記(という名の感想)を書こうと思います。

因みに会場は奇しくも4年前に Kaggle Days Tokyo が行われたのと同じ Google 六本木オフィスであり、その時のノベルティのTシャツを着ていたので色んな思い出がぶわっと溢れ出しました。また、会場が本格的過ぎてセッションのガチ感が半端なかったです。

また本イベントはありがたいことにアーカイブでの視聴が可能です!興味のある方は当日の Tweet まとめと併せてライブ感を楽しみつつ是非ご覧ください!

togetter.com

目次

  • メインセッション
    • オープニングトーク by smly さん
      • 資料: TBA
      • 概要
    • 招待講演1「火山コンペ準優勝ソリューション」by yukke42さん、tattakaさん、mipypfさん (Vesuvius Challenge 準優勝チーム)
      • 概要
    • 招待講演2「5 x 3」by yiemon773さん, charmqさん, kenshinさん (Identify Contrails 3位チーム)
      • 資料: TBA
      • 概要
    • 招待講演3「CommonLit Solutionの紹介と考え方- Fulltrain戦略と(Seed/Model)Ensembleの可視化 -」by chumajin さん (CommonLit 入賞チーム)
      • 資料
      • 概要
    • 招待講演4「LLM参戦記」 by mitmulさん, yahataさん, kakuさん, yiemon773さん (LLMコンペ入賞チーム)
      • 資料: TBA
      • 概要
  • スポンサーセッション
    • Google様; 会場&サポート提供】「「極意本」サンプルコードをクラウド上で動かそう」by upura0 さん
      • 資料
      • 概要
    • 【TURING様; 配信サポート】「Turing 株式会社会社紹介~Kaggler の皆さんに知ってもらいたいこと~」by いのいちさん
      • 資料: TBA
      • 概要
  • LT
    • LT発表1「GPT APIを使った広告テキスト生成コンペ@YANS2023に参加した話」by NSKさん
      • 資料
      • 概要
    • LT発表2「Kaggle Notebookの計算資源だけ使って画像コンペでソロ金を取る秘訣」by たっかーさん
      • 資料
      • 概要
    • LT発表3「BigQueryで参加するレコメンドコンペ 」by shimacos さん
      • 資料
      • 概要
    • LT発表4「今年参加したコンペで学んだ教訓」by Anonamenameさん
      • 資料
      • 概要
  • 懇親会
  • 終わりに

*1:2019年の Kaggle Tokyo Meetup #6 参加時は Expert でした

続きを読む

poetry で直接指定する wheel file を url ではなく local path にすることで依存関係解決の度に download されるのを防げた件

背景

前回の記事では、poetry でライブラリの wheel file を直接 URL で指定することで依存関係の解決が長すぎる 問題*1を解消し、同一の poetry 環境に PyTorch と RAPIDs を共存させました。

tawara.hatenablog.com

これ自体は大成功だったのですが、wheel file の URL を指定すると依存関係の解決が走るたびに file が donwload されてしまいます。おそらく多くの poetry + PyTorch ユーザが同じ経験をしているのではないでしょうか。

「ローカルにあるファイルさえ指定できれば...!」と思っていた方も多かったと思います、というか僕が思っていました。

解決策

なんと、普通に公式に解決策が載っていました。シラナカッタ...

python-poetry.org

[tool.poetry.dependencies]
# directory
my-package = { path = "../my-package/", develop = false }

# file
my-package = { path = "../my-package/dist/my-package-0.1.0.tar.gz" }]

pyproject.toml において、path 引数によって local においた file (またはディレクトリ) を指定できます。

僕の場合は home directory 下にある chache ディレクトリ (/home/tawara/.cache) にとりあえず poetry_wheels というディレクトリを作り、そこに PyTorch と RAPIDs のファイルを wget で全てぶち込んで*2 path を指定しました。以下のような感じです。

torch = { path = "/home/tawara/.cache/poetry_wheels/torch-1.13.0+cu117-cp39-cp39-linux_x86_64.whl"}
torchaudio = { path = "/home/tawara/.cache/poetry_wheels/torchaudio-0.13.0+cu117-cp39-cp39-linux_x86_64.whl"}
torchvision = { path = "/home/tawara/.cache/poetry_wheels/torchvision-0.14.0+cu117-cp39-cp39-linux_x86_64.whl"}
rmm-cu11 = { path = "/home/tawara/.cache/poetry_wheels/rmm_cu11-22.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"}
ptxcompiler-cu11 = { path = "/home/tawara/.cache/poetry_wheels/ptxcompiler_cu11-0.7.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"}
cubinlinker-cu11 = { path = "/home/tawara/.cache/poetry_wheels/cubinlinker_cu11-0.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"}
cudf-cu11 = { path = "/home/tawara/.cache/poetry_wheels/cudf_cu11-22.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"}
dask-cudf-cu11 = { path = "/home/tawara/.cache/poetry_wheels/dask_cudf_cu11-22.10.0-py3-none-any.whl"}
pylibraft-cu11 = { path = "/home/tawara/.cache/poetry_wheels/pylibraft_cu11-22.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"}
ucx-py-cu11 = { path = "/home/tawara/.cache/poetry_wheels/ucx_py_cu11-0.28.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"}
raft-dask-cu11 = { path = "/home/tawara/.cache/poetry_wheels/raft_dask_cu11-22.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"}
cuml-cu11 = { path = "/home/tawara/.cache/poetry_wheels/cuml_cu11-22.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"}
pylibcugraph-cu11 = { path = "/home/tawara/.cache/poetry_wheels/pylibcugraph_cu11-22.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"}
cugraph-cu11 = { path = "/home/tawara/.cache/poetry_wheels/cugraph_cu11-22.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"}

結果として、例えば新しいライブラリを add とかした際にいちいち download されることがなくなりました。やったね!

因みに、local の path を指定すると、insall したライブラリを poetry show で確認した際にその path が表示されるようになりました*3。おそらくは同じライブラリ名でも違う local wheel file を使い場合を想定してるのかなって思いました。

おわりに

poetry に PyTorch を wheel の URL 直接指定で入れるようになってからずっと「いちいち download 待つの面倒だなぁ」と思っていたのですが、普通に解決方法があってリサーチ不足を思い知らされました。やっぱドキュメントはちゃんと読まなきゃですね。

調べるきっかけを下さった @colum2131 さん、@ryomak333 さん、ありがとうございました!

*1:正確には余計なものまで download して時間が大幅にかかる問題

*2:ダウンロードするURL の特定方法については前回の記事をご覧ください

*3:url 指定のときも表示されてたっけ...?

CUDA 更新のついでに PyTorch と RAPIDS を poetry の同一環境にゴリ押しで共存させた件

はじめに

皆さんお久しぶりです。本当にいつぶりかわからないくらいですが、久々に CUDA の version を更新をするにあたって書きたいネタが出来たのでまとめることにしました。

更新のたびにやっている作業や関連リンクをまとめるというのが当初の目的でしたが、少し前に RAPIDS が pip への提供を試験的に再開したのを思い出し、

medium.com

じゃあ PyTorch と同じ環境に簡単に入れられるんじゃね?と手を出してしまったのが事の始まりでした(結構苦労した...😇)。

同じことをやりたがっている方を Twitter で見かけたのもあり、自分の 備忘録としても知見の共有としてもやり方を書き残そうと思います。

TL;DR

  • CUDA の version を上げるにあたり RAPIDS が PyPI への提供を試験的に始めていたことを思い出し、PyTorch との共存に挑戦
  • 依存関係に気を付ける必要はあるが PyTorch と RAPIDS を同じ poetry 環境に install することにゴリ押しで成功

  • 方法としては、RAPIDS 関連のライブラリの wheel を直に指定する以下の11行*1pyproject.toml に追加する(要 CUDA >= 11.5)

rmm-cu11 = { url = "https://developer.download.nvidia.com/compute/redist/rmm-cu11/rmm_cu11-22.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"}
ptxcompiler-cu11 = { url = "https://developer.download.nvidia.com/compute/redist/ptxcompiler-cu11/ptxcompiler_cu11-0.7.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"}
cubinlinker-cu11 = { url = "https://developer.download.nvidia.com/compute/redist/cubinlinker-cu11/cubinlinker_cu11-0.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"}
cudf-cu11 = { url = "https://developer.download.nvidia.com/compute/redist/cudf-cu11/cudf_cu11-22.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"}
dask-cudf-cu11 = { url = "https://developer.download.nvidia.com/compute/redist/dask-cudf-cu11/dask_cudf_cu11-22.10.0-py3-none-any.whl"}
pylibraft-cu11 = { url = "https://developer.download.nvidia.com/compute/redist/pylibraft-cu11/pylibraft_cu11-22.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"}
ucx-py-cu11 = { url = "https://developer.download.nvidia.com/compute/redist/ucx-py-cu11/ucx_py_cu11-0.28.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"}
raft-dask-cu11 = { url = "https://developer.download.nvidia.com/compute/redist/raft-dask-cu11/raft_dask_cu11-22.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"}
cuml-cu11 = { url = "https://developer.download.nvidia.com/compute/redist/cuml-cu11/cuml_cu11-22.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"}
pylibcugraph-cu11 = { url = "https://developer.download.nvidia.com/compute/redist/pylibcugraph-cu11/pylibcugraph_cu11-22.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"}
cugraph-cu11 = {url = "https://developer.download.nvidia.com/compute/redist/cugraph-cu11/cugraph_cu11-22.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"}

目次

  • はじめに
  • TL;DR
  • machine の 環境
  • 準備
    • CUDA の入れ替え
    • PyTorch の poetry での install
  • RAPIDS の poetry での install
    • 正当な手順 (断念)
    • ゴリ押し手順(成功)
  • おわりに

*1:私の環境での話なので、別の環境では異なる wheel file を指定する必要があるかもしれません。

続きを読む

Correct is not Gentle

という標語を勝手に考えたよってポエムです。

先に言っておくと以下では当たり前のことしか言っておらず、また個人の主観で語っています。それをご承知の上で暇つぶし程度に楽しんで頂けたら幸いです🙏

続きを読む