MLエンジニアについて思うこと
MLエンジニアってなんだろうなって考えることが増えてきたので、改めて私が思うMLエンジニアについて書いてみる。
結論としては、MLエンジニアはエンジニアの一種であり所謂バックエンジニアの特殊系だと思っている。
MLエンジニアについての個人的意見
MLエンジニアというとモデルを作るエンジニアであるというのは、間違いないと思っている。しかし、これはあくまで仕事ととしては極一部ではないかと思っている。
じゃあ、仕事としての範囲はどこかというと、ロジックにMLを含むバックエンドサービス全般なのではというのが個人的な見解である。
とはいえ、機械学習モデルを作る必要があるけれども、現代は色々なものがライブラリとして提供されているのもあり、以前よりも難易度は下がっているのではというのが個人的な意見である。
そのため、MLエンジニアにモデルを作るだけではなく、モデルをきちんとプロダクトやサービスのロジックに組み込み、それを運用することが求められるというのが個人的な意見である。
とはいえ、MLの運用というのはとても難しく利用しているデータにも左右される。良いモデルを作るには良いデータが必要である。
そのため、規模の大きなデータについてもある程度扱えるようになるというのもまた大事である。
さて、品質の良いデータとモデルだけで、ユーザーに価値が出せるかというとそんなことはない。ユーザーに価値を届けるために、ユーザーの課題を見つけてロジックを考える必要があり、
最新の論文で提案されているモデルについて
論文で提案されるような最新のモデルについての自分の認識は、要件の柔軟さが高いということである。
そのため、求められる要件が曖昧だったりいろんなケースに対応しないといけない時ほど最新のモデルが役に立つというのが自分の認識である。
しかし、必ずしもモデルだけで要件を満たす必要がないのが、システム開発における良いところでもある。
個人的な意見としては、必ずしも論文を実装できる必要はなく、それらを含めて要件をどうやってシステムに落とすかという方が大事なのではと思っている。
mlopsエンジニアについて
mlopsエンジニアについての自分の認識は、プラットフォームエンジニアリング+SREのようなものだと思っている。モデルを高速にデプロイするにはどうするかを考えつつ、それらを安定的に開発し運用するためのシステムの一連の監視の仕組みを整えていくのがmlopsエンジニアに求められることだと思う。
データサイエンティストについて
よくmlエンジニアと一緒くたに語られるが、個人的には全く違う職種だなという感覚がある。
自分は経験豊富なデータサイエンティストではないので大きく勘違いしているかもしれないが、データサイエンティストの役割は不確実な状況下で、データを使ってなるべく不確実なものを減らしつつ妥当な形で意思決定(またはサポートを)する職種である。
不確実なものを妥当な形で扱うために、統計や場合によってはMLを使うことがあるというだけで、根本的にはMLエンジニアとは異なるのではというのが私のお気持ちである。
また、意思決定ができれば良いので、使い捨てのコードでも十分であり、ソフトウェアエンジニアリングを必ずしも重要視する必要はないというのが私の理解である。
正しく意思決定をし再現性を担保するためにテストコードのようなものは必要かもしれないが、それよりも誤った手法選択をしない方がよほど大事である。
おわりに
あくまでこれはmlエンジニアとして働いている自分の一意見であり、これが絶対ではない。働いている会社によっても求められることは全く異なるだろうし、全部やらないといけないということあるだろう。
重要なのは、それぞれの役割について現状の環境にフィットするように決めつつ、素早く修正していくことだと思う
この記事が気に入ったらサポートをしてみませんか?