🆓

イントロダクション

なぜ機械学習システム設計が重要なのか

機械学習(ML)は急速に進化し、現在では多くの業界で欠かせない技術となっています。その結果、MLエンジニアへの需要が高まる一方で、競争も激化しています。MLシステム設計は、単なるアルゴリズムやモデルの知識を超えたスキルセットを要求される分野であり、効率的でスケーラブルなシステムを構築する力が求められます。面接においても、こうしたスキルを持ち合わせているかが問われるため、MLシステム設計の理解は欠かせません。

MLエンジニア採用におけるシステム設計と運用の重要性

MLエンジニアとしての採用プロセスでは、データパイプラインの構築やモデルのデプロイ、システムのスケーラビリティ、リアルタイムでの応答性を含む幅広い知識が評価されます。システム設計に関する質問を通して、面接官は候補者の実践的なスキルと問題解決能力を見極めることが目的です。
機械学習モデルの運用は複雑で、多くの課題を伴います。特に大企業においては、モデルのプロダクション化が難しい場合が多く、エンジニアリングとシステム設計の力が試される場面が増えています。MLモデルを実際に業務に活用するには、単にモデルを作成するだけでなく、それを確実に動作させるインフラや環境を整えることが不可欠です。
大規模な組織では、推論(インファレンス)のレイテンシに対して厳しい要件が課されることも一般的です。例えば、ユーザーの操作に即座に応答するシステムでは、数ミリ秒単位での推論結果の返答が求められます。このような厳格な条件を満たすには、効率的でスケーラブルなシステム設計が不可欠です。また、予期しない負荷増加や異常にも対応できる強固なインフラの構築も求められるため、システム全体を考慮した設計が重要な役割を果たします。
システム設計は、MLモデルの運用を成功させるための基盤であり、効率的な運用・スケールを実現するための重要な要素です。

ML System Design InterviewCat: MLシステム設計の面接準備に役立つ一冊

本書「ML System Design InterviewCat」は、これからMLエンジニアとして活躍したい方々が面接準備を進めるための実践的なガイドです。Google、Amazon、Microsoftなどのテック企業を目指す読者にとって、面接でのMLシステム設計に関する質問を解答するために必要な知識とアプローチを学ぶことができます。本書には以下が含まれています。
  • MLエンジニア職の面接フローと質問タイプの解説
  • MLシステム設計のためのアプローチを体系化したフレームワークの紹介
  • 理論と実践をつなぐ具体的なユースケースの紹介
MLシステム設計の基礎から、実務で役立つ知識まで網羅している本書が、皆様の面接準備に大いに役立つことを願っています。

システム設計における機械学習エンジニア

notion image
システム設計の環境において、機械学習 (ML) エンジニアは、上図に示されているような複数のコンポーネントを理解し、統合する責任があります。ここでのMLエンジニアのタスクと重点分野について、以下に説明します。
  1. データパイプライン管理
      • データレイク: さまざまなソースからのデータがデータレイクに収集されます。MLエンジニアは、データが簡単にアクセスおよび分析できる方法で保存されることを確認する必要があります。
      • データウェアハウスとデータマート: これらは、異なるクリーンネスレベルおよび使用準備が整ったデータを提供する構造化されたストレージ層(ブロンズ、シルバー、ゴールドの階層)です。MLエンジニアはデータエンジニアと協力して、データが生の状態(ブロンズ)から高度に整備された状態(ゴールド)へ効率的に移行するようにします。
  1. データ準備
    1. データレイクまたはデータウェアハウスからの生データをクレンジング、変換し、MLモデルに適した形に準備します。これには、欠損値の処理やデータの正規化などの前処理ステップが含まれ、モデルの学習に適したデータの品質と一貫性を確保します。
  1. 特徴量エンジニアリング
    1. 特徴量エンジニアリングは、データから意味のある特徴量を抽出または作成する重要なステップです。MLエンジニアは、ドメイン知識やモデルの特定の要件に基づいて、これらの特徴量を識別および構築します。統計的手法、ドメイン知識、特定のアルゴリズムを使用して、データから有益なインサイトを引き出すことが含まれます。
  1. モデルの学習と機械学習
    1. データが準備され、特徴量がエンジニアリングされた後、MLエンジニアは機械学習モデルを開発、学習、微調整します。適切なアルゴリズムを選択し、ハイパーパラメータを最適化し、モデルのパフォーマンスを評価して、目標とする指標を満たすことを確認します。この段階には、モデルのライフサイクルの自動化と監視を含むML Opsフレームワークと連携することも含まれます。
  1. MLOps(機械学習運用)
    1. MLOpsは、機械学習とDevOpsを組み合わせて、モデルのライフサイクル全体を管理するプラクティスです。この環境で、MLエンジニアはDevOpsやソフトウェアエンジニアと協力して以下を行います。
      • モデルのデプロイ: モデルを開発環境から本番環境にシームレスに移行できるように、モデルのデプロイパイプラインを実装します。
      • モデルの監視と保守: モデルのパフォーマンスを監視するシステムを確立し、精度と関連性を維持するために必要に応じてモデルを再学習します。
      • 再学習と更新の自動化: データの変化やモデルの劣化を管理するために、新しいデータに基づいてモデルを自動的に再学習するワークフローを開発します。
  1. A/Bテストとモデル評価
    1. モデルのデプロイ後に、A/Bテストがよく使用され、異なるモデルやレコメンダーのバージョンを比較します。MLエンジニアはプロダクトチームと協力して、A/Bテストを設定し、分析し、モデルの実際のパフォーマンスに基づいて最適化します。
  1. プロダクトへの統合(例:レコメンデーションシステム)
    1. 最後に、学習されテストされたモデルがプロダクト(例:レコメンデーションシステム)に統合されます。MLエンジニアは、モデルの予測や推奨がプロダクトの目標に沿い、エンドユーザーに価値を提供することを確認します。これには、ソフトウェアエンジニアやプロダクトマネージャーと密接に連携し、目標を一致させ、ユーザーインタラクションを追跡する必要があります。
まとめると、システム設計環境におけるMLエンジニアは、データ準備、特徴量エンジニアリング、モデルの学習、モデルのデプロイ、監視、最適化をML Opsを通じて行います。また、A/Bテストとプロダクトへの統合に協力し、ユーザーに価値を提供します。

機械学習関連の職種について

notion image
組織内には、データと機械学習に関連するさまざまな職務があります。
データサイエンティストとは、データの収集、解釈、処理に焦点を当てた職種です。彼らはデータに対して統計的および探索的分析を実行します。データサイエンティストは機械学習に関連して、データ収集、特徴量エンジニアリング、モデル構築などに取り組むことがあります。データサイエンティストは通常、ノートブック環境のPythonまたはRで作業し、組織の機械学習モデルを構築する最初の人物です。
 
データエンジニアは、組織のデータを支えるインフラストラクチャとワークフローに焦点を当てた職種です。彼らは、会社がデータをどのように収取し、データパイプラインを管理し、データがどのように保存および転送されるかを支援します。データエンジニアは、データ周りのインフラストラクチャとパイプラインを実装します。別名は「Data Site Reliability Engineer」或いは「Data Platform Engineer」です。
 
機械学習エンジニアは、データエンジニアと似たタスクを行いますが、MLモデルに焦点を当てています。彼らは、データサイエンティストによって開発されたモデルを受け取り、それらのモデルを学習し、デプロイする周りのインフラストラクチャとオペレーションを管理します。MLエンジニアは、モデルの更新、モデルバージョニング、およびエンドユーザーへの予測の提供を扱う本番環境を構築するのに役立ちます。
企業のデータサイエンスチームが小さく、チームがよりアジャイルであるほど、同じ人が複数の役割を果たす可能性が高くなります。そのような状況にある場合、データサイエンティストやデータエンジニアとしての役割もこなす必要があります。
 
研究者(リサーチャー)は、機械学習の分野を進歩させるための新しいアルゴリズムの発見と開発に主に焦点を当てた職種です。機械学習のさまざまな分野、モデルアーキテクチャ、自然言語処理、コンピュータビジョン、ハイパーパラメータチューニング、モデルの解釈可能性などが含まれるかもしれません。ここで議論されている他の役割とは異なり、研究者は、本番環境のMLシステムを構築するのではなく、MLへの新しいアプローチをプロトタイピングして評価することにほとんどの時間を費やします。機械学習のより深い知識が必要となる職種です。
データアナリストは、データから洞察を評価し、収集し、これらのインサイトを組織内の他のチームに共有します。彼らはSQLやスプレッドシートで作業し、ビジネスインテリジェンスツール(BIツール)を活用して、インサイトを共有するためのデータビジュアライゼーションのデータビジュアライゼーションされたダッシュボードを開発します。また、データアナリストはA/Bテストの実施者の役割を果たし、異なるモデルや機能の有効性を評価するために実験設計を行い、テスト結果に基づくインサイトを提供します。A/Bテストのインフラストラクチャを使用し、信頼性の高い実験結果を収集・分析するスキルが求められます。実験結果に基づきモデルの最適化や改善を行い、MLシステムの全体的な品質向上にも寄与します。
 
📚 補足 データアナリストとデータサイエンティストの違いについての説明
データアナリストは、プロダクトチームと密接に協力して、ビジネス課題を解決するインサイトを提供する重要な役割を担います。データアナリストは既存のデータの傾向を特定し、それからインサイトを導き出すことに焦点を当てているのに対し、データサイエンティストはそのデータを使用して将来の予測を生成し、インサイトの生成を自動化またはスケールアウトすることに焦点をあてる事が多いです。
開発者は、エンドユーザーがMLモデルにアクセスできるようにする本番システムを構築する責任があります。彼らは、モデルをクエリして予測を返し、ウェブアプリケーションまたはモバイルアプリケーションを介してユーザーフレンドリーな形式で結果を返すAPIの設計を行います。これには、クラウドでホストされるモデル、またはデバイス上で提供されるモデルが含まれる場合があります。開発者は、MLエンジニアによって実装されたモデル提供インフラストラクチャを利用して、モデルユーザーに予測を提示するためのアプリケーションおよびユーザーインターフェースを構築します。

これらの役割においてMLシステム設計を理解する必要な理由

職種
役割
MLシステム設計の理解がもたらす利点
データサイエンティスト
データの収集・解析、モデル構築に焦点
プロダクション対応のモデル設計やリアルタイム推論、モデルモニタリングが容易になる
データエンジニア
データパイプラインやデータインフラの管理
スケーラブルなデータアクセスと低レイテンシーのインフラ構築が可能になる
MLエンジニア
モデルのデプロイおよび運用管理
信頼性の高い本番環境の構築、スケーリング、CI/CDのパイプライン設定が可能
研究者
新しいアルゴリズムやアプローチの開発
運用しやすいプロトタイプの設計が可能になり、エンジニアとの協力が円滑になる
開発者
ユーザーにMLモデルを提供するアプリケーションやインターフェースの構築
直感的かつ応答性の高いインターフェース、スピード・スケーラビリティ・信頼性の高いAPI構築
A/Bテストの実施者
異なるモデルや機能の効果を比較する実験のデザインと結果の解釈
信頼性の高いデータ収集と分析が可能になり、MLシステムの品質向上に貢献できる

本書の進め方と対象読者

機械学習エンジニアにとって、本書の内容は全て総合的な理解が必要であり、特に面接ではこれらの知識が試されることが一般的です。面接官は、これらの概念をただ理解するだけでなく、実際の問題解決に応用できる候補者を求めています。本書では、星の数を使って重要度を示します。
Chapter Title
English Translation
重要度
機械学習システム設計
ML System Design
⭐⭐⭐⭐
レコメンドシステム
Recommender System
⭐⭐⭐⭐
自然言語処理
Natural Language Processing
⭐⭐
検索システム
Search Engine
⭐⭐⭐⭐
深層学習
Deep Learning
⭐⭐
A/B Test
A/B Test
⭐⭐⭐
MLOps
MLOps
⭐⭐⭐⭐

機械学習システム設計(重要度: ⭐⭐⭐⭐)

対象読者
MLシステム設計の基礎を学びたい中級から上級のMLエンジニアやデータエンジニア、プロダクション環境での運用に興味がある人
ユースケース
  • MLモデルの運用やスケーラビリティを考慮したシステム設計スキルの習得
  • 高負荷なリアルタイムアプリケーションをサポートするための設計理解
  • システム設計関連の面接準備および、MLシステムのプロダクション化の理解向上

レコメンドシステム(重要度: ⭐⭐⭐⭐)

対象読者
中級から上級のデータサイエンティスト、MLエンジニア、エンジニアリングチームのリーダー
ユースケース
  • ECサイトや動画配信サービスなどでのパーソナライズされたレコメンドを導入
  • ユーザー行動データを活用し、レコメンドアルゴリズムの設計と実装に活用
  • レコメンドシステムに関するインタビュー対策

自然言語処理(重要度: ⭐⭐)

対象読者
自然言語処理の基礎を学びたいデータサイエンティストや機械学習エンジニア、会話型AIやテキスト分析に興味のある人
ユースケース
  • NLPプロジェクト(テキスト分類、感情分析、エンティティ抽出など)に関する基礎知識の習得
  • NLPに関連する職種の面接準備
  • ビジネスでのNLPアプリケーションを理解し、業務に活用するためのスキル向上
  • 検索エンジンのクエリ解析

検索システム(重要度: ⭐⭐⭐⭐)

対象読者
検索技術の基礎と応用を学びたいエンジニア、検索エンジンの設計に関心があるデータエンジニア、データサイエンティスト
ユースケース
  • 情報検索、文書検索、商品検索の改善と実装
  • スケーラブルな検索システムの設計とユーザーエクスペリエンスの向上
  • 検索エンジン関連の面接対策およびシステム設計の理解

深層学習 (重要度: ⭐⭐)

対象読者
初心者から中級者のデータサイエンティストや機械学習エンジニア、深層学習の面接対策を行いたい人
ユースケース
  • コンピュータビジョン、音声認識、自然言語処理などの分野での基礎理解
  • 深層学習を用いた新しいプロジェクトの立ち上げ
  • 面接での深層学習に関する質問に自信を持って回答できるようになる

A/B Test(重要度: ⭐⭐⭐)

対象読者
A/Bテストの基礎を学びたいMLエンジニア、データサイエンティスト、プロダクトマネージャー、データアナリスト
ユースケース
  • 新しい機能やモデルのパフォーマンスを評価するための実験設計
  • エンドユーザー向けにモデルや機能の効果を定量的に測定
  • ビジネスインパクトを最大化するための統計的手法の理解と活用
  • 結果の解釈をサポートし、意思決定に役立てるためのA/Bテストの実施方法
  • プロダクション環境でのA/Bテストの設定、結果の分析、次のアクションへのフィードバックサイクルの構築

MLOps(重要度: ⭐⭐⭐⭐)

対象読者
プロダクション環境でのMLモデルの運用に関心のあるMLエンジニアやデータエンジニア、DevOpsの基礎を学びたい人
ユースケース
  • MLモデルのデプロイメントからモニタリング、継続的インテグレーションとデリバリの導入
  • MLOpsパイプラインの設計および自動化によるモデル運用の効率化
  • MLOps関連の面接準備と、組織内でのMLプロジェクトの展開や管理のスキル向上
 
‼️ Important
本書に掲載されているサンプルコードはすべて概念実証のためのものです。ご利用の際は自己責任でお願いいたします。

外資系企業における機械学習エンジニアのキャリアの選択肢

外資系企業で働く機械学習エンジニア(MLエンジニア)のキャリアパスは多岐にわたります。以下では、主に外資系で想定されるキャリアの方向性や役割例、必要となるスキルセットなどを概観します。

外資系企業の特徴とキャリア形成上のポイント

  1. グローバルで共通した評価制度
    1. 外資系企業は、日系企業と比べて「職務・成果ベース」で評価される傾向が強いです。成果を数値(KPI)やインパクトで示すことが求められるため、明確に成果をアピールできるエンジニアにとってはキャリアアップしやすい環境と言えます。
  1. 英語コミュニケーション能力
    1. 社内公用語が英語であったり、海外のチームとの協業が当たり前という状況が多いです。技術的なスキルだけでなく、英語での報告・議論、情報共有がスムーズにできることが重要になります。
  1. 役割分担の明確化・専門性の高さ
    1. 外資系企業では、組織内で「MLエンジニア」「データエンジニア」「MLOpsエンジニア」「研究者(Research Scientist)」など、ロール(役割)が比較的はっきり分かれている場合が多いです。自分の専門性を高めていきやすい一方で、プロジェクトのスコープが限定される可能性もあります。
  1. グローバルプロジェクトへの参画チャンス
    1. 日本支社に所属しつつも本社(海外)のプロジェクトに積極的に関われるケースがあります。大規模プロジェクトや最新技術の実践活用に触れる機会が多いことも大きな魅力です。(Amazon社内でよくみられます)

Machine Learning Engineer(MLエンジニア)のキャリアパス

ここでは、MLエンジニアのキャリアパスを紹介します。実際は企業や部署によって呼び方や業務範囲が異なりますが、参考としてご覧ください。
  • 主な業務内容
    • モデル開発・実装・チューニング
    • モデルを組み込んだアプリケーションやサービスの開発
    • パイプライン構築、データ前処理(簡易的な部分)
    • 推論環境の最適化、モニタリング
  • 必要スキル
    • PythonやScala、Golangなどのプログラミング言語(Pythonが圧倒的に多い)
    • TensorFlow、PyTorchなどの深層学習フレームワーク
    • Docker/Kubernetesなどコンテナ関連の基礎
    • Sagemaker、Databricks、Kubeflowなど学習基盤の経験
    • ある程度のソフトウェアエンジニアリングスキル(コード品質、CI/CDなど)
  • キャリアパス例
    • スペシャリスト路線:IC (Individual Contributor) → MLテックリード → MLアーキテクト or MLテックリード
    • マネジメント路線:IC (Individual Contributor) → エンジニアリングマネージャー (Engineer Manager) → シニアエンジニアリングマネージャー

外資系ならではのキャリア構築のコツ

  1. 明確な成果とインパクトの提示
    1. 外資系企業では具体的な数値目標やKPIを持って成果をアピールすることが非常に重要です。例えば、「モデルの精度を〇%改善し、年間○億円のコスト削減に貢献」などの形でしっかりと可視化しましょう。
  1. 社内ネットワークの活用(グローバルチームとの交流)
    1. 海外の本社や他国の支社にもエンジニアが多数在籍している場合が多いです。異なる言語・文化圏のチームと積極的に連携し、技術情報を共有することで、最先端のスキルを得やすくなります。
  1. 継続的なスキルアップと最新技術へのキャッチアップ
    1. 機械学習の世界は新しいモデルや手法が次々と発表されます。Kaggleや各種勉強会・国際学会などに参加しながらスキルを磨き続ける必要があります。外資系企業は最新技術への投資に積極的なことも多いので、社内リソースを最大限活用しましょう。
  1. ソフトスキル(英語含む)も重視
    1. 技術力が優秀でも、それを分かりやすく説明したり、チームとのコミュニケーションを円滑に行う力がないと評価されにくい場合があります。特に英語での議論やプレゼンテーション、ドキュメント作成能力はキャリア上で大きなアドバンテージとなります。
こうした点を踏まえながら、ご自身の得意分野(理論・実装・インフラ等)を見極めてキャリアパスを計画していくと、外資系企業でより大きな成長と活躍が期待できるでしょう。

Authorについて

マレーシア出身。2011年、17歳のときに渡日し、高等専門学校に入学。大学、大学院では固体物理学を専攻し、密度汎関数理論を駆使したFortranとC++でのシミュレーションを学びました。
2019年、Yahooにデータエンジニアとして入社。Yahoo!ショッピングと当時のPayPayモールのためのSpringBootを使ったバックエンド開発、AirflowによるETL開発、Apache Zeppelinの社内ツール開発、MLOpsでのMLflowを用いた機械学習モデルデプロイメントを経験。同社での経験は、データサイエンスを実用化させる事に取り組んでいました。
2021年、Walmartに入社。Walmartの内部システムから西友のデータインフラに向けてのデータプラットフォームの設立と移行において中核を担いました。また、西友の食料品のダイナミックプライシング戦略の核となる価格弾力性モデルの開発に貢献しました。
2023年、PayPayに入社。検索エンジンのインフラ、ランキング学習、および推薦システムを担当。担当業務は、フィンテックの革新と機械学習が交差する点にあり、技術が金融サービスをよりパーソナライズし、改善する方法の限界を広げています。
プライベートでは、ハイキングと旅行を趣味とする。また、ウェブアプリケーションの構築や、機械学習システムデザインの最新の動向について研究を行う。
2023年にDrBunnyを共同開発し、渡日した外国人が医療症状を英和翻訳できるプラットフォームを立ち上げました。当プロジェクトは、言語の背景にかかわらず、すべての人が自分の健康上の懸念を効果的に医師に伝えられることを目指しています。

イラストレーターについて

(1)イラストレーター
業務コンサルタント、アーティスト。
2022年にITコンサルタント会社に入社し、経理業務専門のコンサルタントとしてBPRやシステムリプレイスプロジェクトに従事。業務コンサルタントの傍ら、アーティストとして活動中。学生時代から続けている趣味のレタリングやイラストスキルを活かし、挿絵、メニュー表、Webサイトのアイコンを制作しています。現在、UI/UXデザイナーを目指し学習中。
(2)イラストレーター
インドネシア出身。2013年にインドネシアの大学を卒業後、メディア・フォトグラフィー会社でデザイナーとして働きました。2015年に来日し、日本語を学んだ後、日本語学校を卒業。2018年に名古屋の広告会社にリモートで入社し、約4年間にわたりパンフレットやロゴデザイン、レイアウト制作などを担当しました。
現在は東京のIT企業で、国内(日本)および海外(インドネシア版、タイ版、ベトナム版など)のWebサイトや記事の情報グラフィックコンテンツの制作を担当しています。
また、フリーランスとしてデザインの仕事も手がけながら、グラフィックデザインやイラストに加えて、現在はUI/UXデザインのスキル習得にも取り組んでいます。
すべてを見るには

返金は購入日から1日以内に申し出て下さい。詳細はこちらからご確認ください。
また、このコンテンツ以外の他の永久アクセス権は付与されない事はご注意下さい。

支払いはによって保護されています

購入済の方はこちらからログインしてください

Loading...