メインコンテンツにスキップ
OpenAI

2022年12月8日

企業

バックエンドシステムの細部に着目

Person gazing across the room with an optimistic expression

写真提供:Jake Stangel

読み込んでいます...

エンジニアリングに関心を持ったきっかけは何でしたか?

私は幸運にも若い頃にプログラミングを覚えたので、プログラミングを使って他の分野を開拓していきました。ミドルスクールではBASICのプログラミング言語とテキサス・インスツルメンツのグラフ電卓を友達に教えてもらいました(私のコードはひとつのプログラムに対し27文字の変数までに限られており、GOTO文に依存していたため、案の定維持することができませんでした)。とにかく、友達と共にいくつかの簡単なプログラムを作成しました。テキストベースの冒険ゲームや、連携電卓のためのチャットアプリ、よくあるAIDEで二次計画法を使った公式など。

その後もっと複雑なプログラムを書くようになりました。ニュートンの法則を説明する視覚的なガイドや、惑星やその衛星の位置を予測するための軌道計算機は、学校のLinux部の目に留まりました。それからCardBusのWiFiアダプターが動くようにNDISwrapperと格闘したり、Compizを使ってデスクトップWindowsを色鮮やかに設定したりしていました。こういった感じでハイスクール時代、そしてその後もコードを通しての発見が続き、今日のエンジニアリングに関わる私が誕生したわけです。

どうしてOpenAIに入ったのですか?

以前の会社では、バックエンドの役割からフルスタックの役割に移動になり、フロントエンドの仕事やUXデザインがどれだけ嫌いか思い知らされました。バックエンドのシステムに関る役割に戻りたかった。それに学生時代に親しんだLinux環境とのやりとりが恋しかったのです。OpenAIは私が求めていた仕事の変化、またそれ以上をオファーしてくれました。OpenAIのスーパーコンピューティングチームでの役割は、まさに私が求めていたものだったのです。

OpenAIでは、現在どんな課題に取り組んでいますか?

調査段階のAIワークフローはもともとペースが速いものです。研究者はコードを使用開始するプラットフォームで何事からも邪魔されることなく、arXivからプレプリントを取得し、新しい試みをテストしたいのです。また、研究者がまるで数学者のような行動をとるため非常に複雑になります。長年積み上げてきた直感を頼りに、目に留まる問題はどんなものであろうと、一週間以内に解決策を構築しようとするのです。こういったプログラムの実行は世界一巨大なスーパーコンピューターで行われるということで、さらに複雑になります。私たちのチームが関与するのはこの完了直前の過程です。問題を調査する必要があり進行を妨げることがないよう、先手を打って回避させるのが私たちの仕事です。回避できない場合は調査チームと原因を突き止め、早急に次善の策を講じるよう努めます。

Person sitting at a cafeteria table with a glass of water and closed laptop

写真提供:Jake Stangel

OpenAIでのスーパーコンピューティング業務が他社と異なる点は何だとお考えですか?

運営規模が驚くほど巨大なことですね。定期的にサードパーティーのハードウェア管理会社から言われるのは、私たちのチームで発生する問題はそれまで見たことないものばかりだと。それはただ単に、当チームの設備ではひとつのスーパーコンピューターに接続されているハードウェアの数が他社よりも多いことが原因なんですが、当チームの性能期待値が高いことが原因な場合もあります。モデル訓練は同期で行われることが多いため、効果的に作動させるには全クラスタのなかでいちばん遅いノードの速度に合わせて設定する必要があります。

当社で最も重要なモデルは10憶ドル相当のスーパーコンピューターにより訓練されるため、他社では気にもかけないような性能低下を徹底的に調査しなくてはいけません。ひとつの回線を変えるだけでメインラインカーネルが改善され、1週間の作業のうち6日間も無駄にする必要がなくなったり、新しいドライバーのリリースで、そのうちの1項目が当チームが問題を発見しアップストリーム可能なように修復されたものだったりするので、成果が見えるんです。

OpenAIでの1日は、どんな感じなんでしょう?

私の勤務内容はほぼ、コード作業や問題の調査、あと会議に参加することです。火曜日は会議だけで埋まります(通常はそんな日は火曜日だけなのでたすかります)。その他の日はデバッグ作業とコーディング作業でしょうか。特定された問題は大概コーディング作業が必要になります。Design Docsを作成したり、プルリクエストのブランチにホットフィックスで解決させたり、パッシブヘルスチェックを使って不備のある機器をクラスタから排除したりなど。

問題を解明するためにはある程度の調査活動が必要です。調査が必要なものには「今日の作業は昨日よりも時間がかかっているようだ」といったぼんやりした質問から、「イーサーネットでNIC接続をして30GB/秒以上の速度でプッシュしたら、カーネルがパニックを起こすかな?」といった怖ろしいほど専門的な質問までさまざまです。こういったさまざまな質問が入り混じり、予想どおりに事が運んだら生産性のある一日、予想を裏切る混乱がおき、新しいことを学んだらエキサイティングな一日になります。

「OpenAIでの仕事では、他では無視されるようなコンピューティングの側面を深掘りできるんです」

毎日の活力はどこから来ますか?

ほぼ毎日、出勤時にはやらなければならないことが頭の中にあります。そして、期限通りにタスクを終えることで、どのチーム、プロジェクト、研究者に貢献できるかを把握するようにしています。これまで働いてきたなかで、OpenAIは最も大きな企業です。自分の仕事の成果を即座に評価してもらうことが、毎日の原動力になります。システム上で些細なことを見つけた時も、俄然やる気が出ます。バックエンドシステムの仕事をしたのはOpenAIが初めてではありませんでしたが、ハイパフォーマンスコンピューティング空間に関わる仕事をしたのは初めてです。

私たちが取り組むテクノロジーは、この空間特有の性能上の課題があってこそ存在するのです。前職ではハードウェアの物理トポロジーの心配をする必要はありませんでした。例えば同じNUMAドメインの中で通信が発生することを確実にするとか、NVIDIAのGPUDirect経由でコロケーションされたNVMEまたはInfiniBandでGPUを利用できるようにしたり、調査のランタイムを妨害する迷惑なご近所さんを避けるために、システムのプロセスを決められたCPUに固定するなどといったことです。OpenAIでの仕事では、他では無視されるようなコンピューティングの側面を深掘りできるんです。目の前のタスクがより興味深くなります。

アイデアはどこから得ますか?

私たちの調査チームがモデルの性能向上を実現させていくのを見るのが、いちばんのインスピレーションですね。多くのグループが連絡や開発中のモデルをテストするためにSlack Botやシンプルなプレイグラウンドを作成しています。そこで訓練進行中のモデルが改良されていく様子が見られるんですよ!

私たちのさまざまなSlackチャンネルでは、今人気の「:meow_party:」というSlackの絵文字を使い、やる気が出るような、インスピレーションになる内容をタグ付けするんです。2020年中期に入社してから、私の「:meow_party:」でタグ付けされた投稿は400以上になります。平均して週に4つは貰っていることになりますね!