2024.10.01
自社の社内情報を未来の“ゴミ”にしないための備え 「情報量が多すぎる」時代がもたらす課題とは?
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.10.29
5〜10万円の低単価案件の受注をやめたら労働生産性が劇的に向上 相見積もり案件には提案書を出さないことで見えた“意外な効果”
2024.10.24
パワポ資料の「手戻り」が多すぎる問題の解消法 資料作成のプロが語る、修正の無限ループから抜け出す4つのコツ
2024.10.28
スキル重視の採用を続けた結果、早期離職が増え社員が1人に… 下半期の退職者ゼロを達成した「関係の質」向上の取り組み
2024.10.22
気づかぬうちに評価を下げる「ダメな口癖」3選 デキる人はやっている、上司の指摘に対する上手な返し方
2024.10.24
リスクを取らない人が多い日本は、むしろ稼ぐチャンス? 日本のGDP4位転落の今、個人に必要なマインドとは
2024.10.23
「初任給40万円時代」が、比較的早いうちにやってくる? これから淘汰される会社・生き残る会社の分かれ目
2024.10.23
「どうしてもあなたから買いたい」と言われる営業になるには 『無敗営業』著者が教える、納得感を高める商談の進め方
2024.10.28
“力を抜くこと”がリーダーにとって重要な理由 「人間の達人」タモリさんから学んだ自然体の大切さ
2024.10.29
「テスラの何がすごいのか」がわからない学生たち 起業率2年連続日本一の大学で「Appleのフレームワーク」を教えるわけ
2024.10.30
職場にいる「困った部下」への対処法 上司・部下間で生まれる“常識のズレ”を解消するには