Ask HN: 機械学習エンジニアは勤務時間中に何をしているのか?
(news.ycombinator.com)- 回答した人たちの内容を整理
schmookeeg
- 現在機械学習エンジニアとして働いていて、いちばん気に入っているのは技術的な背景のない人たちと協業すること
- MS Outlookを5回中3回以上まともに開けないような人でも、自分の専門分野について驚くほどの深さと洞察を持っている
- これはとても謙虚な気持ちにさせられる
- 技術的な背景のない人たちは私を魔法使いのように見ていて、私は彼らをブードゥー教の司祭のように見ている
- 私たちが好むものを訓練して予測するとき、それは双方にとってとてもやりがいがある
- モデリングの大半は医療関連
- 請求、処方箋、医師所見、バイタルサイン、診断画像などの膨大なデータレイクからインサイトを引き出している
- こうした情報にとても簡単にアクセスできるのもすごいこと(HIPAAはさておき)
- 時間の現実
- 週あたり会議は約3時間
- 業務の準備、ETLの問題解決、ビジネス向けの単発クエリ実行などに約3時間かかる
- 残りの時間は、数百万ドル規模の収益を予測するためにわずかな優位を見つけようとデータを探索している
- これはまるで数学でウォーリーを探せをやっているようなもの
- そのウォーリーの場面は約50TBある :D
burnedout_dc4e3
- 2000年代半ばから機械学習をやってきた
- 時間の半分は、モデルを訓練して使うためにデータを整備し、「データパイプラインを回し続ける」ことに費やされる
- もう半分の時間は、コーディング能力がほとんどない「AI科学者」向けの技術サポートに費やされる
- 彼らはさまざまなチャットボットサービスに内容をコピー&ペーストして時間を使っている
- PythonパッケージのインストールやGitの使い方などを教えるのが主な仕事
- 彼らの作業が私たちのプロジェクトにどう適用されるのかという計画はない
- それでもトランスフォーマーモデルが私たちのあらゆるデータ処理問題を解決すると主張する
- 彼らはさまざまなチャットボットサービスに内容をコピー&ペーストして時間を使っている
- この誇大宣伝サイクルが終わるまで、新しい仕事はせず辞めようかと考えている
tambourineman88
- 機械学習を学んでいたときの予想とは逆の現実
- この仕事の95%はデータの整理、データセットの結合、そして特徴量エンジニアリング
- モデルのフィッティングとテストはたった5%にすぎない
- この投稿への返信 #1
- 最初からずっとそうだったし、これからもそうだろう、アーメン
- スタッフ/責任者レベルで重要なこと
- 推論モデルに依存する製品機能とデータキャプチャの間にある「データインピーダンス」を維持することが重要
- これは製品や機能が変わっても、データストアや学習コーパスにデータを供給する計測やデータ粒度が壊れないようにするため
- 強化学習(RL)の問題で重要なこと
- 状態空間と行動空間のタプルについて、適切な変数が記録されていることを確認するのが重要
- その次は、報酬フィードバックのためにインターフェースや環境モデルをどう調整するかを見つけること
davedx
pip install pytorchを実行- 環境が壊れる
- Python環境の修復に4時間
pip install Pillowを実行- MacBookのCPUアーキテクチャに合わないというエラーが出る
- Python関連のものを全部削除して最初から入れ直すのにさらに4時間
pip install ...を実行しようとしたが、もう退勤時間!
Xenoamorphous
- 一般的なソフトウェア開発者だが、必要に迫られてML作業をすることになった
- 「本物の」ML専門家が、確率的/勾配降下法による結果と人々の期待値をどう扱っているのか気になる
- 通常のソフトウェア作業では、動くか動かないかで、動かなければ理由を説明でき、うまくいけば直せる
- しかしMLでは「このテキスト分類器がこのテキストを正しく分類しなかったのはなぜか?」と聞かれる
- それに対しては「閾値に0.004点足りなかった」や「単語の選び方や順序のせいで満たせなかった」としか言えない
- これは誰にとっても不満の残るものに思える
angarg12
- 役職はMLエンジニアだが、実際の業務はほぼ純粋なソフトウェアエンジニアリングに近い
- 本番環境でMLシステムを支えるシステムの構築が主な仕事
- 他の人たちが挙げているように、主にデータ変換、モデル訓練、モデルサービングなどが含まれる
- ツールを作ったり既存システムを修正したりして、科学者たちが仕事をできるよう支援するのも業務に含まれる
- ただ外から見ると、自分の会社は例外的なようだ
- 業界では、MLエンジニアへの期待はデータ/応用科学者の仕事(例: モデル構築とテスト)により近いように見える
- そのため、各社の各役割に対する期待にはかなりの曖昧さがある
runban
- 高給取りの清掃員
- 汚いデータからはまともな結果は得られない
- ちなみにこの作業にはPythonよりPerlのほうがずっと向いている
- 高給取りのマザーボードのトラブルシューター
- 水冷を使っていてもH100は本当に熱くなる
- 専任のハードウェア担当がいないので
- みんなと同じように、勝手気ままなサードパーティ依存関係との戦い
primaprashant
- この5年間MLEとして働いてきたが、他のコメントでも触れられているように、仕事の大半はSWEに似ている
- プロジェクトの段階によって日常業務は変わるが、だいたい次のいずれか
- ステークホルダーやTPMと協業し、データ分析を通じて優先度の高いビジネス課題を解くための仮説を立てる
- ビジネス課題をML課題として定式化し、MLモデルとビジネス課題に適したメトリクスを作る
- 新機能や新しいアイデアの技術的実現可能性を検証するためのPoCやプロトタイプを構築する
- アーキテクチャや技術的意思決定のための設計文書を書く
- プラットフォームチームと協力して、新規および既存のMLプロジェクトの要件に応じたデータパイプラインを設定・維持する
- 推論向けのMLマイクロサービスを構築、デプロイ、保守する
- A/Bテストを実行し、事後分析のための設計文書を書く
- MLモデル再学習のためのパイプラインを設定する
jackspawn
- 時間の50%以上をバックエンドエンジニアリングに使っている
- MLがより大きなAPIの中で使われるから
- そのAPIのエンドツーエンド体験に責任を持っている
- なので、時間あたりで最も価値を出せることなら何でもやる
- それはしばしばMLモデルとはまったく関係ない
mardifoufs
- 推論コードの最適化や、学習済みモデルの「製品化」をしている
- 今はクラウドサービスがまだ一般的でない業界で働いているため、ローカルで学習と推論を行っている
- LLMではないので既製ツールがあまりなく、そこが面白い
- 多くを自分で作らなければならない
- データ品質評価(ローカル部分が難しい)からCUDAを直接使うことまで、幅広い作業をしている
- というのも、すでにCUDA上に構築されていて活用できる信号処理ライブラリがあるから
- ときにはチーム内ツールの構築も含まれる(研究者/MLEの混成チーム)
- とてもニッチな分野なので、データや推論を可視化するために自作しなければならない
- ツールや社内ソフトウェア設計に関して完全な自由があり、組織内で大きな影響を与えられた
- その場しのぎで作ったツールの1つが、今では主力製品にも搭載される予定
hirako2000
- 主業務ではないが、時間の大半は「いろいろつなぎ合わせる」作業に費やしている
- 既存オープンソースの調整
- リソース最適化の方法を把握する
- 別のデータセットでモデルを再学習する
- 雑に書かれたPythonコードを動かそうとする
- 欠けているrequirementsファイルを追加する
- データを整理する
- すでに何年も前にやられていないことで、MLで実際に有用に解決できるものは何かを考える
- 最新のGPU価格を確認し、ホスティング業者から高い時間貸しをするよりGPUを買うほうが得か計算する
- 頭が痛くなるまで論文を読む
- 要旨を読み、途中の図をいくつか流し見するだけでも時間がかかる
tenache
- 機械学習を学び、もともとはその役割で採用されたが、会社が方向転換して今はLLMに取り組んでいる
- 時間の大半は次のようなことに使っている
- さまざまなLLMがどう動くかを理解する
- 最適なパラメータを見つける
- RAG(Retrieval-Augmented Generation)をどう行うか
- 他のボットとどう統合するか
trybackprop
- ある1週間で、通常は次のような仕事をしている
- 15%: 技術議論の会議や1:1ミーティング
- 通常はモデルに関するアイデア、計画、またはML製品サポートについて話し合う
- 40%: ML開発
- プロジェクト初期段階では製品要件を理解する
- 製品/ビジネス目標の達成に役立ちそうなMLモデルやアルゴリズムをチームと議論する
- アナリストやデータサイエンティストから既存データセットを集める
- そのデータセットを使って学習用・検証用データセットを生成するパイプラインを作る
- 学習用/検証用データセットが埋まるのを待つ間(最大2週間かかる)、開発段階が前後している別プロジェクトにも並行して取り組む
- 新しいモデル(PyTorchで書かれたもの)にも取り組み、少量データでテストしてオフライン性能を評価し、期待どおりに動くかを見極める
- モデルを使って製品情報を埋めるいくつかの手動テストを走らせ、モデルの健全性を確認する(大規模実験なしでは、自分とチームメイトの直感に頼るしかない)
- 学習用/検証用データセットが埋まったら、大量データでモデルを学習させ、オフライン結果を確認し、問題があればモデルを調整したりアーキテクチャを変えたりする
- オフライン結果が良好、あるいは有望に見えれば、実験のためにモデルを本番環境にデプロイする
- 同時に、作った新モデルをテストするために製品/インフラコードを変更することもある
- 実験を実行し、トラフィックをゆっくり増やして1〜5%割り当てまで持っていき、数週間から1か月走らせる
- その間、結果を観察し、関連するすべてのパイプラインを監視してモデルが適切に学習されるようにし、想定外のインフラ/バグ/製品要因で実験結果が変わらないようにする
- 結果が予想どおりで初期仮説とも一致していれば、チームとリリース可否を議論し、出すと決まればリリースする!
- (注: モデル開発には、特徴量作成、データセット準備、分析、MLモデル自体の作成、製品/インフラコード変更の実装などが含まれる)
- 20%: 保守
- 新モデルを開発しているからといって既存モデルを無視するわけではない
- 毎日確認し、性能が劣化していないか、想定外の形で性能が変化していないかを見る
- また、パイプラインを修正してより効率的にする
- 15%: 研究論文と技術の習得
- AI/MLの世界は急速に変化しているので、新しい研究論文を継続的に読み、自宅で新技術を試して最新情報を保っている
- 面白いので負担には感じない
- 最新情報を維持するための仕事だとは思っていない
- 10%: 社内研究
- チームや社内の他製品についてもっと学び、自分たちのチームがどう支援できるか、あるいは彼らからどんな技術/手法を借りられるかを探るのにこの時間を使っている
- また、この6か月/1年の仕事を振り返って得た洞察を書き留めるのにもこの時間を使っている
4件のコメント
「技術的な背景のない人たちは私を魔法使いだと思い、私は彼らをブードゥー教の司祭だと思う」という表現が面白いですね。
データ…データ…共感しますね
漠然とそんな感じだろうと思っていた通りですね。
興味深い内容ですね!