NLLG LLM訓練エンジニア面接体験記:事前学習・ファインチューニング・RLHFのフルチェーン評価

大規模言語モデル学習著者: BeautyResume チーム

NLP経験2年の方が理化学研究所のLLM訓練エンジニアポストに面接。Transformer導出、事前学習データ処理、SFT/RLHFパイプライン、分散学習戦略を網羅した3回の技術面接の詳細な振り返り

背景紹介

まず私の経歴から説明します。NLP経験2年、それ以前は中規模企業で検索・推薦関連のNLP業務に携わり、BERTやRoBERTaなどのモデルを用いてテキスト分類やマッチングを行っていました。大規模言語モデルが話題になってから、Transformerの基礎原理や事前学習の流れを独学で学び、小規模モデルの事前学習実験も自分で実行していました。理化学研究所がLLM訓練エンジニアを募集しているのを見つけた時、これこそ私が夢見ていた方向だと思い、すぐに応募しました。履歴書を提出してから約1週間で面接の招待を受けました。全体のプロセスは3回の技術面接と1回のHR面接で、かなりテンポ良く進みました。

面接プロセスの振り返り

一次面接:Transformer + 事前学習(約1.5時間)

一次面接の面接官は非常に経験豊富な技術リーダーでした。簡単な自己紹介の後、すぐに本題に入りました。

最初の質問で少し緊張しました:Multi-Head Attentionの計算過程をゼロから導出してください。これは準備していましたが、実際に手書きで導出すると、特にQKVの次元変換の部分で少し詰まってしまいました。面接官が丁寧にヒントを出してくれ、ようやく完全な数式を書き終えました。面接官はなぜスケーリング因子1/√dkを使うのかとフォローアップし、内積値が大きくなりすぎてsoftmaxの勾配が消失するのを防ぐためだと答えると、頷いてくれました。

次にTransformerにおける位置エンコーディングの役割と種類について聞かれました。正弦位置エンコーディングからRoPE、ALiBiまで説明し、理研のモデルでも回転位置エンコーディングが使われている可能性に触れると、面接官は満足そうでした。その後、予想外の質問が来ました:新しい位置エンコーディング方式を設計するとしたら、何を考慮しますか?少し考えてから、長文への外挿性、計算効率、注意機構との互換性を考慮すると答え、面接官はアプローチは正しいと言ってくれました。

事前学習の部分は特に深く掘り下げられました:LLM事前学習のデータ処理フローはどうなっていますか?データ収集、クリーニング、重複排除、トークン化、データ配分まで順に説明しました。面接官は特に重複排除戦略に興味があり、MinHashとSimHashの違いを聞かれました。幸い関連論文を読んでいたので答えられました。その後事前学習データの配分をどう決定するかとフォローアップされ、下流タスクの重要性やデータ品質に基づいて調整すると説明し、DoReMiのような自動配分手法にも言及しました。

最後はオープンクエスチョン:事前学習のlossにスパイクが現れた場合、どうトラブルシューティングしますか?データ品質の確認、学習率の設定、勾配蓄積の正確性を確認すると答えました。面接官は、特定のバッチに異常データが含まれていないかも確認すべきだと補足してくれました。これは確かに考えていませんでした。

二次面接:ファインチューニング + SFT + RLHF(約2時間)

二次面接の面接官はアライメント分野の担当者で、非常に深い議論になりました。

最初の質問はSFTのデータはどう構築するかでした。指示設計、品質管理、多様性確保の観点から説明しました。面接官は特にSFTデータにおけるハルシネーション問題をどう回避するかに注目していました。複数回の人間によるレビューや既存モデルによる品質フィルタリングを提案しましたが、面接官はまだ足りないと言い、データソースから制御し、すべての回答に事実に基づく根拠があることを確保すべきだと指摘しました。

そして本題のRLHFの完全なフローに入りました。SFTモデル訓練、報酬モデル訓練、PPO最適化の3段階を詳しく説明しました。面接官はいくつかの重要なポイントをフォローアップしました:

報酬モデルの訓練データはどうやって入手するか?人間による偏好データのアノテーション、4段階ランキング方式だと答えました。面接官はアノテーター間の意見の不一致が大きい場合どうするかと聞き、多数決、アノテーター数の増加、より明確なアノテーションガイドラインの設計を提案しました。

PPOにおけるKLダイバージェンスペナルティの役割は?ポリシーモデルが参照モデルから離れすぎるのを防ぎ、生成品質を維持するためだと答えました。フォローアップでKLペナルティ係数をどう調整するかと聞かれ、適応的調整方法を説明すると、面接官は納得した様子でした。

また興味深い質問もありました:DPOとPPOの違いとそれぞれの長所・短所は?理論的導出、訓練安定性、データ要件の観点から比較すると、面接官は分析が包括的だと言ってくれました。

三次面接:分散学習 + プロジェクト深掘り(約1.5時間)

三次面接は技術責任者で、エンジニアリング能力とプロジェクト経験に重点を置いていました。

LLM分散学習にはどのような並列化戦略がありますか?データ並列、テンソル並列、パイプライン並列から3D並列まで説明し、ZeRO最適化の3つのレベルにも言及しました。面接官はZeRO-3とFSDPの違いをフォローアップしました。これはあまりうまく答えられず、FSDPはPyTorchのネイティブ実装だとしか言えませんでした。面接官はFSDPの通信最適化の改善点を補足してくれました。

プロジェクト深掘りのセクションでは、過去に取り組んだプロジェクトの詳細を説明するよう求められました。以前構築した検索関連性モデルを選びました。面接官は非常に詳細に聞いてきました:訓練にどれくらいのデータを使ったか?どれくらいの時間がかかったか?どんな問題に直面したか?どう解決したか?すべての質問に深いフォローアップがあり、危うく詰まりそうになりましたが、実際に自分で行ったプロジェクトだったので詳細を覚えていました。

最後はシステム設計問題:ゼロから1000億パラメータモデルの訓練システムを設計するとしたら、どうアプローチしますか?ハードウェア選定、並列化戦略、データパイプライン、フォールトトレランス、監視システムの観点から私の考えを説明しました。面接官は大方向は問題ないが、細かい点はまだ多く考慮すべきことがあると言いました。

面接問題まとめ

1. Multi-Head Attentionの計算過程をゼロから導出

2. なぜスケーリング因子1/√dkを使うのか?

3. 位置エンコーディングの種類と設計の考慮点

4. LLM事前学習のデータ処理フロー

5. MinHashとSimHashの違い

6. 事前学習lossのスパイクをどうトラブルシューティングするか

7. SFTデータの構築方法とハルシネーションの回避

8. RLHFの完全なフロー(SFT→RM→PPO)

9. 報酬モデルのアノテーター間の意見不一致が大きい場合の対処

10. PPOにおけるKLダイバージェンスペナルティの役割と係数調整

11. DPOとPPOの違いと長所・短所

12. 分散学習の並列化戦略(DP/TP/PP/3D)

13. ZeRO-3とFSDPの違い

14. ゼロから1000億パラメータモデルの訓練システムを設計

学びとアドバイス

1. Transformerの基礎は確実に身につける:公式を暗記するのではなく、ゼロから導出でき、各ステップの原理を理解することが重要。面接官はフォローアップ質問で本当に理解しているかどうかを見極めます。

2. 事前学習のフローを包括的に理解する:データ処理から訓練監視まで、各段階を理解し、自分なりの考察を持つことが大切。「知っている」レベルで止まらないでください。

3. RLHFの深い理解が不可欠:LLM訓練のコア技術の一つとして、SFT、RM、PPOの各段階の詳細を把握し、DPOなどの新しい手法も理解しておく必要があります。

4. 分散学習の知識はプラスになる:LLM訓練に分散システムは不可欠。少なくともZeRO、DeepSpeed、Megatronの原理は理解しておきましょう。

5. プロジェクト経験は本物であること:面接官は詳細を深掘りします。実際に取り組んでいないプロジェクトだと、すぐに見抜かれます。正直さは誇張よりずっと重要です。

FAQ

Q:面接の難易度は?
A:全体的にかなり難しいです。特に二次面接のRLHF部分は深く掘り下げられました。ただし、面接官の態度は皆良く、ガイドやヒントを提供してくれ、意地悪な質問はありませんでした。

Q:コードを書く必要はありますか?
A:一次面接では数式の導出、二次面接では疑似コードの記述、三次面接は主にシステム設計で、完全なコードを書く必要はありませんでした。

Q:学歴に要件はありますか?
A:実務能力を重視しているようです。私の学歴は平均的でしたが、プロジェクト経験が関連性が高く、面接の機会を得られました。

Q:面接の期間はどのくらいですか?
A:一次から三次面接まで約2週間で、各面接の間隔は3-5日でした。ペースは合理的でした。

Q:理研の具体的な技術詳細を知る必要はありますか?
A:内部技術について直接質問されることはありませんが、関連論文や技術方向を理解していることはプラスになります。

#大規模言語モデル#事前学習#RLHF#Transformer#Distributed Training#Baidu ERNIE Bot#SFT#PPO