<- home

今働いているTuringという会社の話

2023/08/31

今年の1月にTuringという会社に入ったのだけど、なかなか面白い会社なので、普段どんなふうに仕事しているのか少し書いてみようと思う。

Turingは、完全自動運転EVを量産する「完成車メーカー」になることを目指している会社だ。トヨタとかテスラみたいなああいう会社になりたいというわけだ。2030年に「ハンドルのない完全自動運転の技術的実現」「自社開発した10,000台の車両の販売」「上場」をマイルストーンに置いている。今は売上はなくて、調達した資金で会社は運営されている。ちょうど最近、シリーズA調達が始まっていて、ちょうと最近プレシリーズA (個人ラウンド) のプレスリリースが出た。

PR TIMES 「自動運転EV開発のチューリング、経営陣とエンジェル投資家、計8名より5.2億円の資金調達を実施」

もう少し細かいマイルストーンとしては、2024年に自社EV100台の販売、2025年に完全自動運転車プロトタイプ完成、2028年に量産開始、、などいくつかある。

少し前にやっていた仕事

少し前まで私がやっていた仕事は、こちらの記事で詳しく説明してくれているが、LLM (大規模言語モデル) を使って自動運転してくれるアルファードの開発だ。

Impress Watch 「”テスラ超え”目指すTURING、自社工場を公開 LLMで完全自動運転」

私は運転の上手さというもののほとんどは歩行者や他車との協調だと考えている。狭い道や車の多い交差点などでは、本当にたまにではあるんだけど、驚くほど複雑な状況でクイックな判断をしなければいけないことがある。

そういった状況での自動運転には、言葉を通じてこの世界を理解している言語モデルが使えるのでは?という発想でこのアルファードは開発されることになった。

こいつはざっくり言うと、人間がマイクに向かって喋る → faster-whisperが音声認識して、LLMにその指示を入力 → LLMが到達すべき先を教えてくれる → 経路生成、経路追従 みたいな感じで動く。LLMはたまに「止まれ」とかそういうことも言ってくるので、そういうときは止まるようになっている。

作ってみて思ったのは、LLMが言葉で色々説明してくれるの凄すぎ!ということだ。上に書いたような他車との協調が求められる状況では、車が何故そういうふうに動いたの?ということを乗っている人は知りたくなるはずで、LLMはそことの相性がとても良い。LLMだけで完全自動運転をするのはかなり難しいけど、複雑な状況に対応するためのVision-and-Languageモデルを車に積んでおくのはかなりいいアイディアなんじゃないかなと割と実感として思ったし、実際Turingは今そういうことをやっている (その特許がこれだ「自動運転EV開発のチューリング、自動運転に関する特許を2件同時に出願」)。

また、人間の口頭指示をLLMに渡すためにfaster-whisper (guillaumekln/faster-whisper) を使っているんだけど、こいつが凄すぎる。本当に聞き間違いが少ないし、認識速度が速い。たまに車に話しかける時に噛んでしまうんだけど、こいつはなんか噛んでもあたかも噛まなかったように認識してくれるのでかなり頭がいい。このアルファードには本当にたくさんの投資家やメディアの人を乗せたけど、音声認識の精度の良さについて触れる人はひとりもいなかった。このことはとても重要だと考えていて、このLLM自動運転システムにおいて、マイクやSpeech-to-Textの性能がとても高かったからこそ、みんなAIが何を言うのか、車がどう動くかにちゃんと着目することができたのだと思う。私はfaster-whisperはこのアルファードプロジェクトの影のMVPだったな、と思っている。

使用するPCの選定から全体のアーキテクチャの設計、ソフトウェア部分の実装やテスト、投資家やメディアを実際に載せてデモンストレーションを見せたりなど色々やれて面白いプロジェクトだった。

今やっていること

今は、「プロダクトチーム」というチームでチームリーダーをしている。プロダクトチームというのは、2024年に販売する車に搭載する自動運転を開発するチームだ。少し車っぽい言い方をすると、ADASのECUを上から下まで作っているという感じになる。2024年にこの車は納車される予定なので、内部的にはもっと細かいマイルストーンを引いていて、このへんはカジュアル面談などではけっこうお見せしている。

自動運転というものはどうやって作るかというと、Turingの場合はカメラとAIを使っている。テスラの車を見たことがある人はわかると思うけど、あんな感じで車にカメラをたくさん付けて、そこからの映像をAIに渡すと、どっちにどう走るべきか、あるいは止まるべきかなどを推論してくれる。そしたらその推論通りに車が動くように、加速度やハンドルの切り方を決めて車に教えてやるのだ。

このチームのエンジニアは、自己位置推定やカルマンフィルタといった自動運転っぽい技術だけでなく、ディープラーニングなどのAI技術、CANや車載ネットワークといった組み込み・車っぽい技術、あるいはテストや法規・認証の対応、ECUとなる計算機の選定・調達など、色々やらなきゃいけないのでまあ大変ではある。

入ってみてどうか

Turingに入って良かったなと普通に思う点は、低レイヤ技術を仕事にできたことだ。私はTuringに入る前、所謂Webシステムの中のインフラなどを中心に守備範囲にしていた。インフラとかデータベースとかネットワークとかそういうやつだ。プログラミングはまあそこそこくらいにはできたと思うけど、所謂Webシステムを構築するプログラムというのはかなりの部分がコンピュータから抽象化されてしまっていて、業務知識をモデリングするためのDSLを書いているような気分になることがある。コンピュータを自在に操作すること自体を面白がるためには低レイヤへのディープダイブをしていかなければいけないのだ。

私は低レイヤを仕事にした経験はこれまでなかったのだけど、趣味的にプロセッサのエミュレータを作ったり、RDBを自作したり、組み込みOSを自作したり、プログラミング言語を自作したり(これは今もやってる)していたのだ。

そして、今実際私達のチームがやっている仕事はこんな感じである。

けっこう面白そうと思った人は、Turingのソフトウェアエンジニアの適性がある。

そして何より、これらを組み合わせて車を動かすというのがやっぱり楽しい。普通ソフトウェアはパソコンの上で動いてよっしゃって感じだけど、実際に自分がそのソフトウェアをデプロイした車に乗ってうまく自動運転できたとき、これはもうかなり楽しくなってしまう。

さらにそれだけでなく、Turingは自動車メーカーになるのだという明確なビジョンがある。エンジニアにとってのこの上ない喜びのひとつは、自分が作ったものを自分の友達や家族が当たり前に使ってくれることだ。自動車メーカーになって、自分たちの車が街を走っているのを見たり、自分の家族や友人が乗ってくれたりするのを想像するとワクワクする。

もちろん、低レイヤを頑張るのは仕事の道具であって、行きたいところに勝手に行ってくれる車を作るのがメインだ。なので必然的に、車両運動モデルや経路追従のためのモデル予測制御(を私達は使っている)、状態推定のためのカルマンフィルタ、自己位置推定など、普通にWebとかのソフトウェアを作ってると出会わないような技術を勉強することになる。

まとめ

エンジニアにとってTuringという会社の技術的な面白いところは、色んな人がいろんな言い方をするものの、大体次の2点にまとめられると思う。

完全自動運転車という、近い将来当たり前になるだろうなと想像に固くない未来っぽいテクノロジーを作れること。そして、単にソフトウェア・ハードウェアに留まらない、エレキ・メカからAI・ユーザーインタフェースまで、極めて幅広い技術的課題との対峙を求められることだ。

Turingのエンジニアリング組織の特徴的なところはソフトウェア成分が高めなところで、これはやはり次の世代の車はソフトウェアで作るものであるということから来ている。ここでいうソフトウェアというのは別に、自動運転システムをゴリゴリ作ったことがある人という意味ではなくて、普通のソフトウェア企業で、ソフトウェアを使って何かを作っていた人という感じの意味合いになる。パッケージ製品でもウェブシステムでもモバイルでもそのへんはわりと何でもよくて、車に関する経験はあればプラスという感じだ。これはTuringのソフトウェアエンジニアの採用方針として、割と昔から一貫しているのではないかなと思う。

そんな感じでまあ、私はTuringに「これまでレイヤ問わずソフトウェアをしっかり作ってきて、特に低レイヤは趣味的にでもけっこう色々やってきて割とわかっている」みたいな人はけっこう合っているんじゃないかなと思っている。私自身が割とそんな感じだし、社内でもソフトウェアエンジニアの採用はそういう人をターゲットにするのがいいのでは、みたいな話が出ている。ソフトウェアをしっかりやってきた人ならたぶん大丈夫。

Turingに興味がある方は、ぜひ私とカジュアル面談をしましょう!下記から応募できます。色々テーマとか書いてあるんですがあまり気にせず送って大丈夫です!

Turing カジュアル面談の部屋 自動運転システムが必要とする技術領域の広さについて話しましょう

Tweet