ソフトウェアエンジニア(MLシステム)

役割
チューリングでは、車載カメラの映像を入力として車両を制御する、End-to-Endの完全自動運転システムの開発を行っています。
自動運転AIの性能向上には、膨大なデータの収集・管理、モデルの学習・評価、継続的な改善サイクルを高速に回し続けることが不可欠です。MLシステムエンジニア(Machine Learning Systems Engineer)は、その開発サイクル全体を支えるソフトウェアシステムやプラットフォームを構築するポジションです。
機械学習モデルそのものの研究開発ではなく、MLエンジニアやリサーチャーがより速く、より大規模に、より信頼性高く開発を進められる環境を構築します。 データ基盤、分散システム、Developer Platform、学習・評価パイプラインなど、機械学習開発を支える幅広いソフトウェアシステムの設計・開発に携わっていただきます。 単なる基盤運用ではなく、チーム横断で課題を発見し、仮説を立て、設計し、実装し、組織全体の開発速度を向上させることがミッションです。
業務内容
- 機械学習開発を支えるデータ基盤の設計・開発・運用
- MLエンジニア向けの内部サービス、Developer Platformの開発
- データ収集・加工・転送パイプラインの構築および最適化
- 学習・評価ワークフローの自動化
- 大規模分散システムの設計・実装・運用
- クラウドおよびオンプレミス環境を活用したシステム開発
- パフォーマンス改善、信頼性向上、運用効率化
ソフトウェアエンジニア(MLシステム)として働くメリット
チューリングのソフトウェアは、最終的に実車に搭載され、現実世界で動作します。
本ポジションが開発するシステムは、個人の生産性を向上させるだけでなく、機械学習チーム全体の研究開発速度を大きく左右します。 世界最高水準のMLエンジニアと協働しながら、自動運転という人類史上最大級の技術課題に挑戦できます。
また、学習基盤、データ基盤、分散システム、Developer Platformなど幅広い技術領域に携わることができ、ソフトウェアエンジニアとして大きなレバレッジを発揮できるポジションです。
この職種にマッチする人材
本職種には、大規模なソフトウェア開発の経験があり、特にETL基盤やワークフローエンジン、大規模なデータクラスター(Hadoop、Kafkaなど)の構築・運用に携わった方がマッチします。
チューリングが扱うのは、カメラやLiDARといった非構造化データであり、そのデータパイプラインをスケーラブルかつ高効率に構築・運用するスキルが求められます。また、ゲーム開発(スマホゲーム、PCゲームなど)や大規模な広告配信・動画配信・推薦基盤の開発において、高アクセス、高トラフィック、低レイテンシーといった厳しい要件を持つシステム開発を経験してきた方は、その知見を活かせます。データエンジニアリングのスキルと、プロダクト開発の視点を併せ持つ人材が理想的です。
- 大規模なソフトウェア開発の経験が豊富な人。
- ETL(抽出・変換・ロード)基盤やワークフローエンジンの開発・運用経験がある人。
- HadoopやKafkaなどのデータクラスター構築・運用に携わった経験を持つ人。
- 高アクセス、高トラフィック、低レイテンシーが要求される大規模サービス開発経験がある人。
- 大規模な広告配信、動画配信、推薦基盤の開発経験を持つ人。
- クラウド活用によるインフラやデータ処理の自動化・高速化に意欲のある人。
- 非構造化データ(LiDAR, カメラ等)を扱うデータパイプライン構築に興味がある人。
- データ品質の維持とデータ量スケールという難易度の高い課題に挑戦したい人。
- レファレンスのない技術領域において、自ら解決策を生み出すことにやりがいを感じる人
- MLエンジニアのモデル開発効率を圧倒的に向上させることをミッションにできる人。
他職種連携の魅力とやりがい
インフラエンジニア(GPUクラスタ)
MLOpsが構築する大規模なデータパイプラインやソフトウェアが動作する実行環境(クラウド、オンプレミスインフラ)の要件定義や調整を行います。特に大規模なバッチ処理を行う計算基盤の要件定義や、AWSなどのクラウドにあるデータパイプラインから、オンプレミスや別のクラウドにある学習環境へのデータ転送にかかる時間の削減や、データの適切な転送の仕組みづくりに取り組みます。これは自動運転開発のイテレーション速度に直結する重要な課題です。
大規模なバッチ処理を行う計算基盤という、一般的な環境ではなかなか出会えない特殊な要件を持つインフラ開発に携われます。ドメインスペシフィックな要件が生み出す技術的な課題を、インフラ側と協調して解決する面白さがあります。特に、複数クラウド環境を跨いだデータ転送の最適化は、自動運転開発の速度を根底から支えることに繋がり、非常に大きなやりがいを感じられます。
ソフトウェアエンジニア(自動運転システム)
現実世界のデバイス(センサー)からデータが書き出される仕組みや、書き出されるデータの形式・内容について連携します。データパイプラインの起点となるデータの収集部分でエラーが発生したり、望む形式でデータが書き出されない場合に、共同で原因を特定し、データの書き出し形式や仕組みの変更に取り組みます。
現実世界のデータをいかに効率良く、モデル学習に利用できる形で取得・加工できるかという、極めて本質的な課題に向き合えます。デバイスから出力されるデータの品質と形式が、後のモデル学習の成否を分けるため、データパイプラインの「川上」の改善に関われることは、技術的な面白さと重要性を感じられます。
MLエンジニア
データセットの作成と改善、キュレーションの仕組み構築、データ処理・変換の高速化など、MLモデル開発に必要なデータの流れ全体に関する業務を共同で行います。MLエンジニアが求めるデータセット作成における要件を満たすためのパイプライン改善が中心となります。
大規模な非構造化データの高速処理という、技術的な難易度が非常に高い領域に挑戦できます。この課題を解決することで、MLエンジニアの「試したい」という施策を迅速に実行可能にし、開発全体の生産性を飛躍的に高めるという、組織貢献における大きなやりがいを得られます。
Join us :
完全自動運転という難易度の高い課題を、
様々なバックグラウンドを持つメンバーと
取り組みませんか?