2024.12.19
システムの穴を運用でカバーしようとしてミス多発… バグが大量発生、決算が合わない状態から業務効率化を実現するまで
jupyter notebookでのdebug入門(全1記事)
リンクをコピー
記事をブックマーク
久保田史洋氏(以下、久保田):今日は5分のLT(ライトニングトーク)なので、5分で終われるかがちょっと不安ですが、急ぎ足で「jupyter notebookでのdebug入門」というタイトルで発表します。よろしくお願いします。
自己紹介も短めです。「Twitter」「Kaggle」を「fkubota」という名前でやっています。バンドルカードの株式会社カンムで、機械学習エンジニアをやっているKaggle Expertです。
コンテンツは、主にビギナーに向けて話します。2本立てで、「debugについて」「jupyter notebookでdebug入門」という内容で発表します。
さっそくですが、「あるある」かなというお話をします。コンペを始める時は「コンペやったるでー!」とテンションが最高潮です。イケてるノートブックを見つけて、これを参考にしよう、これで入門しようと思います。
そのあと「うーん、人のコードを読むのしんどいなぁ」となると思います。自分の環境だと動かないので修正が必要で「ぴえんこえてぱおん」状態になって、「コンペちょっとだるいな」とか「やめちゃう」とかある気がします。
3番目のしんどい部分ですが、debug力があれば軽減されるよねというのがモチベーションです。
「こんな経験はないですか?」ということで、よくある例としてKaggleのノートブックを参考にしている状況を思い出してほしいのですが、classAの中にfuncBがあって、funcBの中にfuncCとかDとか、深い構造があります。
「outputFが重要らしいから、ここを見たいんだけど、深いから理解するのは大変だなぁ」みたいなのがあって、こういう時は、outputFやinput_をprintで見るかなと思います。print debugと呼ばれるものです。
print debugも別に悪くはないし、僕もメチャクチャ使いますが、これだけだとしんどいのは当たり前です。なので今日はdebugをしたほうがいいという話をします。
単純に面倒くさいというのもあるのですが、深くにあると、funcDに到達するまでにいろいろな経路を通ってくるので、単純に1個1個時間がかかるんですよね。
時間がかかると、試行錯誤の数も減ってしまいます。例えばさっきのprintで見ているのを、「これじゃあわからないから」とinput_のshapeを見るために、shapeを付けて実行する……shapeを見るだけなのに、深くにあるせいで30秒かかっちゃうとかは「あるある」だと思います。
あとは、plotしてみるけどエラーが出てしまった、このエラーに気づくのに30秒かかるとか。深いところにあるものをprint debugだけでやろうとするとしんどいです。
そういうのは、デバッガを使うと左の複雑な状況から、右の感じになります。ツールは「pdb」「ipdb」「IDE」「PyCharm」とかいろいろとあります。デバッガも.pyと.ipynb、ノートブックとかいろいろとあって、今日はノートブック形式で話を進めます。ノートブック形式で入門する人が多いのと、参考資料がぜんぜんないのがモチベーションです。
さっそく「どれがいいんですか?」ですが、いろいろとあるんですよね。しかもその一部しか抜き出していなくて、右に行くほど高機能です。
ここが環境です。「JupyterNotebook」とか「JupyterLab」とか「KaggleNotebook」「Colaboratory」と書いています。それぞれを動かすのにどれだけ大変かを○、△、◎で表しています。
この◎は、特に何もしなくてもすぐに動かせるツールなので、今日は「pdb」と「%debug」を紹介します。時間がないので、動かせて学べるサンプルを用意しました。
タブ切り替えて「Colaboratory」で上から動かしていって、僕が書いた指示どおり動かせば、デバッガを体験できるものを作りました。
あとはこれをやってください。わざとエラーを起こさせたり、よくわかんない動作を紛れ込ませたりしているのを、デバッガ使って直していくのを体験できます。せっかく作ったので、よければ使ってみてください。
ぜんぜんdebugをやったことがない3人に試してもらって「よくわかりました」と言われたので、たぶん大丈夫だと思います。なにかあればDMでも教えてください。
これで以上です。ありがとうございました。
司会者:ありがとうございます。「Colaboratory」にサンプルがあるのでメッチャいいですね。私もおかげでdebugを最近少しできるようになってきています。
久保田:よかった、ありがとうございます。
司会者:5個ぐらいあったやつとか、ぜんぜん知らなかったです。デバッガってこんなにたくさんの種類があるんですね。ちなみに久保田さんはどのデバッガを使っていますか?
久保田:結局「%debug」「ipdb」の2つかな。
司会者:どっちも似たような使い心地でしたっけ? コマンド的には一緒ですか?
久保田:動かすdebugは一緒なんですが、使うタイミングがちょっと違います。%debugはあと出しで、エラーが起こった後実行できるので、基本的には使い方が違いますね。一応その気分の使い分けも、Colabで説明しています。ipdbとpbdが同じような感じです。
司会者:ありがとうございます。
2024.12.20
日本の約10倍がん患者が殺到し、病院はキャパオーバー ジャパンハートが描く医療の未来と、カンボジアに新病院を作る理由
2024.12.19
12万通りの「資格の組み合わせ」の中で厳選された60の項目 532の資格を持つ林雄次氏の新刊『資格のかけ算』の見所
2024.12.16
32歳で成績最下位から1年でトップ営業になれた理由 売るテクニックよりも大事な「あり方」
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
PR | 2024.12.20
モンスター化したExcelが、ある日突然崩壊 昭和のガス工事会社を生まれ変わらせた、起死回生のノーコード活用術
2024.12.12
会議で発言しやすくなる「心理的安全性」を高めるには ファシリテーションがうまい人の3つの条件
2024.12.18
「社長以外みんな儲かる給与設計」にした理由 経営者たちが語る、優秀な人材集め・会社を発展させるためのヒント
2024.12.17
面接で「後輩を指導できなさそう」と思われる人の伝え方 歳を重ねるほど重視される経験の「ノウハウ化」
2024.12.13
ファシリテーターは「しゃべらないほうがいい」理由 入山章栄氏が語る、心理的安全性の高い場を作るポイント
2024.12.10
メールのラリー回数でわかる「評価されない人」の特徴 職場での評価を下げる行動5選
Climbers Startup JAPAN EXPO 2024 - 秋 -
2024.11.20 - 2024.11.21
『主体的なキャリア形成』を考える~資格のかけ算について〜
2024.12.07 - 2024.12.07
Startup CTO of the year 2024
2024.11.19 - 2024.11.19
社員の力を引き出す経営戦略〜ひとり一人が自ら成長する組織づくり〜
2024.11.20 - 2024.11.20
「確率思考」で未来を見通す 事業を成功に導く意思決定 ~エビデンス・ベースド・マーケティング思考の調査分析で事業に有効な予測手法とは~
2024.11.05 - 2024.11.05