2年間の仕事の振り返り

始めに

情報系の大学院を修士で卒業して、新卒でIT系の会社に入社した者です。
年末で暇なので今までやってきた仕事をだら~っと振り返っていこうと思います。
新卒で今の会社に入社して二年目ですが、以下のプロジェクトに関わってきました。だいたい2,3か月くらいの短期のPoCが多いです。全部機械学習関係です。

今までやってきたプロジェクトについて

  1. 部品の寿命を予測するプロジェクト : 2,3か月くらい

  2. 回帰予測モデルを作成するプロジェクト : 3か月

  3. 機械の挙動を予測するプロジェクト 2か月

  4. 機械の挙動を予測するプロジェクト2 2か月くらい

  5. LLMを使って色々やるプロジェクト 3か月くらい(現在進行形)

  6. 顧客の環境移行のプロジェクト 2か月くらい(現在進行形)

1.部品の寿命を予測するプロジェクト

初めて配属されたプロジェクトです。この時はOJTで入ったので碌に実働してなかったですね。初プロジェクト且つ途中から入ったプロジェクトで何かできることをしろって言われてめちゃくちゃ困りました。
多分議事録の作成ぐらいしか実になることはしてません。
プロジェクト自体についてですが、実際に壊れた部品が数個しかないのにそのデータを基に機械学習で寿命を予測しようとしてるのは無謀だと思いました。何故始まってしまったのか…
結果はお察しです。

やったこと

  • 議事録の作成

2.回帰予測モデルを作成するプロジェクト

こちらは打って変わって色んなことをさせてもらえました。というか新卒にどういうモデルを使うかの調査から実際の実装まで全部任せるとか正気か?って思いました。
大学院で機械学習の研究はしていましたが、深層学習に触れるのは実は初めてだったので色々と勉強になりました。
こちらのプロジェクトはターゲットの値が予測した数値に達するかどうかを予測したい!というのが趣旨でしたが、そもそも設定した数値に達した履歴が過去数回しかなかったので当然の如く失敗しました。
あとそもそも対象が現在進行形でアップデートされているため、過去のデータが参考にならないのもありました。そのことがわかった瞬間この仕事無意味じゃんって気持ちと何でこの仕事受けたんだよって気持ちになりました。
何故始まってしまったのか…
1,2のプロジェクトに関わってからそもそもプロジェクトが始まる段階から話に入っていきたいなってちょっと思うようになりました。無謀なプロジェクトは止めたい。

やったこと

  • どのようなデータが入手できるかの調査

  • どのような機械学習モデルが適しているかの文献調査

  • 上記のモデルの原型の作成

  • データを利用しやすい形への変換

  • データの分析・クレンジング

  • 機械学習モデルのパラメータの調整

一年目の終わり


二年目の始まり

3.機械の挙動を予測するプロジェクト

回帰予測のプロジェクトが当然のように失敗に終わり、フェーズ2が始まらなかったのでしばらく社内ニートをしていました。
そこで私が暇をしているという話を聞きつけた先輩から手伝ってくれない?という依頼を受けてお手伝いを始めました。
こちらのプロジェクトは元々機械学習モデルが完成していて、対象機種が変わるので微調整をして欲しいという感じでした。
データの可視化はPCAとかLDAを使ってやったことがありましたが、他の手法を教えてもらったり、どのようにして考察をするかを教えてもらって勉強になりました。ただこれも余り良い感じの精度が出なくて撤退。
元々のモデルではそれなりの精度が出ていたみたいなので、工夫次第では何とかなったのかなと思いますが機械学習は難しいですね……
やったこと

  • ハイパーパラメータの微調整

  • データの分析と可視化

  • 特徴量エンジニアリング

4.機械の挙動を予測するプロジェクト2

こちらは3.機械の挙動を予測するプロジェクトの続きのプロジェクトです。
3は機械のセンサーデータから挙動を予測するモデルだったのですが、4は動画データから機械の挙動を予測するモデルでした。
こちらのプロジェクトで実装したモデルは先輩から動画分類ならこのモデルがいいんじゃない?ってお勧めされたモデルをベースに改造を施したモデルです。
ただ、ダメだったので機械学習って難Cっていう思いを強くしました。
あと報告書を作成してそれを顧客に報告したのですが、先輩にめちゃくちゃ修正されました。パワポ大嫌いです。パワポ、1ページに詰め込める情報量が限られ過ぎててゴミだと思います。Wordの方がいい。

やったこと

  • モデルの実装

  • データのクレンジング

  • 報告書の作成

5.LLMを使って色々やるプロジェクト

今やってるプロジェクトです。同じ先輩から誘われたので入りました。
こちらのプロジェクトでは提案・企画の段階から実装のところまで全部関わらさせてもらいました。
顧客がLLMを使ってなんかやりたい!って感じからスタートしたプロジェクトで、とりあえずユースケースを示してそれができるかどうかを調査するふわふわっとしたプロジェクトです。
このプロジェクトで初めて後輩が入りました。一番下っ端じゃなくなったのは嬉しいですね。
何かがやりたい、という曖昧なところから入ったので提案作業が苦痛でした。後輩と先輩が良い感じの提案を出してくれたので、自分の提案をしれっとフェードアウトさせました。パワポ大嫌いです。
LLMを扱うのも初めてだし何ならNLPを扱うのも初めてだったので手探りの状態でスタートしたプロジェクトでした。
今回のプロジェクトではPMである先輩が他のプロジェクトと掛け持ち?状態でかなり忙しかったのと後輩が1年目で相応の動きだったので、コードを書く部分は自分がかなり主力だったのではないかと思います。実際7割くらいのコードは多分自分が書きました。
途中から別の先輩が加わってくれて助かりました。その部分を信頼して任せることができるってでかいですね。
結局オープンソースのLLMだと精度が低いのかかなりじゃじゃ馬で狙った通りの結果を吐き出させるのはなかなか難しいなという感想です。マシンパワーがもう少しあってフル精度だったりサイズの大きなモデルが使えたら少しは変わるのかもしれません。

やったこと

  • 提案・企画

  • フローチャートの構築

  • プロンプトエンジニアリング

  • 環境構築

  • 学習用コードの実装

  • コードレビュー

  • デモUIの作成

6.顧客の環境移行のプロジェクト

5のLLMのプロジェクトと並行して何故か顧客の環境移行のプロジェクトもやることになってしまいました。
客先のPCでやるのですが、何重にも仮想化を噛ましているのでレスポンスが悪すぎてストレスがめちゃくちゃ溜まります。
環境移行とリファクタリングが主な業務範囲です。環境移行→リファクタリングの手順で進めています。
今は環境移行のフェーズで、過去に他社が書いたコードをほぼそのまま環境だけ入れ替える感じなのですが、その書かれたコードが余りにもスパゲッティで読むのもかなり苦痛でした。
しかも高度なコードの検証をしたら移行元のコードに基幹ロジックにバグがあることが発覚。顧客にメリー苦しみマスをプレゼントしてしまいました。
一行のミスで全ての結果が狂っていたのですが、前述のとおりスパゲッティソースだったのとなかなか気づけないような書き方をされていたのダブルパンチで今まで見過ごされていたようです。
綺麗で読みやすいコードを書くのとわかりやすいコメントを書くのは大事だなぁって思いました(小並感)

やったこと

  • 軽微なリファクタリング

  • コード移植

  • 実行結果の検証

  • 後輩へのアドバイス(笑)

総括

やってきたプロジェクトに関する感想

機械学習系のプロジェクトは想定以上に難しかったですがやりがいもありました。
こういう風にしたらいい!という明確な正解のある領域ではないので、自分で仮説を立てて検証してその結果を基に改善する、というPDCAを短いスパンでぐるぐる回せるのが良かったですね。
ただ、"機械学習は手段であって目的ではない"というのは痛感しました。機械学習はデータだったり実装する人の知識や技量に大きく左右される技術なので不安定ですし、100%の予測や分類ができるような確実な技術ではありません。また、できるかどうかが事前に判断することも難しいです。基本的には最後の手段にするのが良いと思います。
個人的な経験からすると、"できる"を判断するのは難しいですが、"できない"を判断するのは結構楽です。機械学習モデルではデータの量と質が予測精度に大きく関わってくるので、量が少なかったり質が悪かったりするデータしかないとほぼ失敗します。

2年間の感想

何だかんだ機械学習関係のプロジェクトに関われているので、今の会社に入って良かったなとは思っています。
論文を読んで実装ってほとんど学生のときと変わらないことしているなって思いました。
でも去年の評価が低かったのは許してないです。人事制度がカス過ぎて人がぽんぽこ辞めてる現状を人事はどう思ってるんでしょうね。
やっている事は楽しいのと仕事自体は快適なので良い話が来たら転職するかなーって感じですね。



この記事が参加している募集

#振り返りnote

85,630件

この記事が気に入ったらサポートをしてみませんか?