Interview for Fulltime (AI Design)
AI Design に関する技術面接準備
想定される質問(ハイレベル)
実践的な問題へのアプローチ方法、トレードオフの特定、ソリューション設計、および潜在的な問題の予測についての洞察を示すことが重要。
- 推薦モデルを GPU 上でどのように提供するか。
- トレードオフや、LLM 推論の各段階(プリフィルやデコード)をどのように提供するか。
- モデル圧縮技術を LLM のトレーニングや推論に適用し、製品化までどのように進めるか。
- 低精度数値計算のプロダクション環境における落とし穴。
期待されるスキル
- 制約がある中で答えを導き出す能力。
- 問題全体と解決空間を可視化する能力。
- 解決策そのものと同様に、解決策に至るアプローチも重要視します。
- トレードオフや各決定の長所と短所を考慮する能力。
- 一貫性、可用性、分割、性能、コストを考慮する能力。
- 現代のコンピュータを用いて達成可能な性能や必要なマシン数について概算を出す能力。
- 問題を独立して構築可能なコンポーネントに分解し、設計内の各部分について詳細に説明できる能力。
- システムがスケールする際のボトルネックを特定し、設計の限界を理解する能力。
- 要件が変化した際に解決策を適応させる能力。
- このシステムを機能させるために必要な物理リソースを概算する能力。
準備1
- 履歴書に記載されている研究プロジェクトについて熟知し、直面した課題や得た教訓を考えてください。
Benckmarking の研究
e.g.
- Optimizer Selection for OOD Generalization
- Pre-trained Models for Calibration (12000 GPU Hours)
RTX8000 x 4 x [Num Run] x12H
Num Run = Models x Datasets x Seeds x Hyperparameters
100 model x 5 dataset x 3 seeds = 1500
1500 x 12H = 18000H
120,000/18,000 = 6.67
6.67 Hyperparameters per experiment
1500x6.67 = 10000 experiments
課題
- モデルの学習に時間がかかりすぎる
- 膨大な数の実験数をうまく管理する (10000 experiments)
解決策
- Pre-Trained Model を公開されているものからうまくサブセットを抽出する(比較可能な対象群を特定する)、グラントに応募する。
- 複数の計算機での実験結果を統一的に管理し、落ちた job などを特定、Rerun を自動でできるように実験管理を自動化。shell の自動生成。
教訓
- スコープを絞り、コミュニティの知を活用することで、解を導きたい問いに集中できる。
- 実験管理の自動化は、研究の効率を向上させる(マニュアルの管理には限界がある)、ほとんど wandb のような API のおかげ。
Pre-Training の効率化の研究
課題
- 研究リソースがない
- 数値実験における不安定さ
解決策
- 分散の研究であったが、1GPU で動作可能なシミュレーション環境を作成し、我々の手法の有効性を示すことで、研究リソースを得る交渉をする。
- アルゴリズム的不安定性を、実験的に原因を特定し、その原因を解決する。
Task Arithmetic の研究
課題
- Task Arithmetic がそもそもうまくいかない、その原因を特定する必要がある
解決策
- Task Arithmetic の定式化を行い、干渉を明示的に防ぐ方法を提案する。
準備2
-
練習として、任意の有名なAIモデルを取り上げ、そのモデルをトレーニングまたは提供するためのシステムについて考えてみてください。過去に設計した複雑なシステムを振り返り、再設計する場合にアプローチをどう変えるか、何がうまくいったかを検討してください。
-
Twitter、Google、Uber、Dropboxなどの既存のシステムを設計する方法を考えてみるのは良い練習になります。日常的に利用している複雑で大規模なシステムを、一から設計する場合を想像してみてください。
推奨されるリソースと方法
- 設計の練習: 実際に設計のアイデアを描き、要件から全体のフローを検討してください。高レベルから始め、詳細に進んでいくプロセスを明確にすることが大切です。
- 実践例を学ぶ: 大手企業が公開しているAIモデルの運用や設計に関するブログ、研究論文、ホワイトペーパーを参考にすることで、現実の課題を理解しやすくなります。
- システム設計の基礎: 分散システムやクラウドインフラの原則を学び、耐障害性や高可用性の設計についての知識を深めてください。
- モデル運用: モデルのデプロイメント、監視、更新、スケーリングに関する知識を得るために、運用系のツールやプロセスを学びましょう。
練習問題の例
- GPU上でディープラーニングモデルを効率的にトレーニングするためのシステム設計。
- 大規模LLM推論のプリフィル段階の最適化手法。
- 低精度演算を使用した場合のトレードオフとその解決策。
- モデル圧縮技術をトレーニングおよび推論に導入する際のシステム設計。
- 新しいAIモデルのトレーニングに必要なデータの準備、前処理、フィードバックループの設計。