ペパボ研究所 研究員の渡辺(@ae14watanabe)です。
先日、ペパボ研究所(以降、ペパ研)が社内で実施した新卒エンジニア向け機械学習研修についてご紹介します。 ペパボでは毎年新卒エンジニア向けの研修を実施していますが、2020年からその研修の一環としてペパ研が機械学習研修を担当しています。 毎年、その時々の社内外の状況を考慮しつつ研修コンテンツをアップデートしているのですが、今年はChatGPTを始めとする大規模言語モデル(Large Language Model: LLM)の発展と普及の勢いを鑑みて、研修目的やコンテンツを設定し、実施しました。このエントリでは研修の概要について述べるとともに、本研修オリジナルの資料を公開します。
本研修の目的
現在、多くのWebサービスが高度な自然言語処理機能を次々とリリースしているように感じます。我々GMOペパボでも例外ではなく、例えばロリポップ!レンタルサーバーのWebサイト自動作成1、カラーミーショップの商品説明文自動生成2、SUZURIのキャラクターチャットbot3などがその事例として挙げられます。
この流れの大きな要因として、OpenAIが今年3月にChatGPTのAPIを公開4したことがあると思います。このAPIの公開によって、機械学習を利用しなければ実現できないような高度な機能を導入するハードルが大幅に下がりました。その理由は、ChatGPTを始めとするLLMが、自然言語によるプロンプトの指定により様々なタスクを処理可能な汎用性を持ち、それらのモデルがAPIを通じて簡単に利用可能になったためです。
しかし、OpenAIのAPIのような外部サービスだけを利用するのではなく、自社で機械学習モデルの構築・運用が有益である場合もあります。具体的には、必要な機能が外部サービスのモデルと完全にマッチしない、性能を更に高めたい、ランニングコストを抑えたい、などの場合です。
したがって、機械学習を自社のサービスに導入したいと思ったとき、外部サービスの利用と自社での構築・運用という2つのアプローチを適切に比較検討する必要があります。そのためには、機械学習の基本的な知識と、外部サービス(今回はOpenAIのAPIや他のLLMのAPIを想定)が何を実現でき、何を実現できないかを理解することが重要となります。
そのため、今年の研修の目的を「サービスへの機械学習導入に向けて、機械学習の基本と、2023年現在の汎用的なモデル(大規模言語モデル)の知識を身につけること」と設定しました。実際のサービス導入のスキルを身につける手前の段階として、この研修ではサービス導入を検討する際の主要なポイントを理解できるようになることを目指しました。
コンテンツ
OpenAI Chat Completions APIを利用して自由にWebアプリケーションを作ってみる(演習)
研修の最初のコンテンツとして、OpenAIのLLMのAPI(Chat Completions API)を活用したWebアプリケーションの開発を自由に行うという演習を設定しました。この演習の目的は2つあります。1つ目は、LLMが自然な応答を生成し、多種多様なタスクを処理できることを体験してもらうこと。2つ目は、受講生にLLMという最先端の機械学習に触れてもらうことで、これから機械学習を学ぶモチベーションを高めてもらうことです。
演習時間は約3時間を想定しましたが、アプリをゼロから作成するには時間が足りない可能性があったため、Ruby on Railsを使用したシンプルなサンプルアプリを提供しました。さらに、本研修の前に行われたRails Tutorial研修5で作成したWebアプリに機能を追加する形式も選択可能にしました。
Machine Learning Crash Course(演習)
Googleが提供しているMachine Learning Crash Course6は、ソフトウェアエンジニア向けに機械学習を短期集中で学べるハンズオン形式のコースです。業務における機械学習の導入の意義を理解しながら、その基本的な理論やTensorFlowを用いた実装について学ぶことができる教材となっています。今回の研修の目的に合致すると判断し、昨年に引き続きこのコースを採用しました。
ただし、全編が英語で記述されているという特性上、初めて機械学習という新しい概念に触れる際の敷居が高いかもしれないと懸念しました。そこで、「何を目指して機械学習を行うのか」や「目標を実現するためにどのような手段をとるのか」といった基本的な考え方を理解するための助けとなるよう、イントロダクションとして座学を提供しました。以下にその資料を公開しますので、ぜひご一読ください。
受講生にハンズオンに取り組んでもらっている最中には、私とペパ研研究員の酒井(@tshk_sakai)の2人体制でこまめなフィードバックを行いました。ハンズオン中に受講生の皆さんにSlackで分報をつけてもらうことで、自分の理解や疑問をこまめにアウトプットしてもらいました。 そのアウトプットに対して、講師陣がすぐさまコメントするという体制を取ることで、ハンズオンの更なる理解をサポートしました。
大規模言語モデルの中身を覗いてみよう(座学)
Machine Learning Crash Courseで習得した機械学習の基本知識に基づき、研修冒頭の演習で触れたLLMについて学ぶための座学を実施しました。このコンテンツでは、そもそも「言語モデル」とは何か、LLMではどのようにテキストを生成するのか、LLMをどのように学習するのかといった、LLMの基礎的な原理を解説しました。LLMの学習はせずにAPI経由で利用するだけにしても、その裏側の原理を理解することを通して、LLMの可能性と制約をより正確に把握することは重要だと考えたためです。
こちらのコンテンツについても資料も公開しています。基本的に教師あり学習などの機械学習の基本的な知識を持つ人を対象としており、具体的なモデルの詳細には踏み込まずに解説しているため、LLMに関心があり原理的な概要を知りたい方はぜひご覧いただきたいと思います。
自社サービスへの機械学習導入事例(座学)
これまでのコンテンツを通じて、受講生たちは機械学習のモデルについてしっかりと理解を深めました。それらの理論的な学びから一歩進めて、実際のサービスに機械学習を導入する際の具体的な視点や注意点を把握してもらうため、ペパ研研究員でありプリンシパルエンジニアの三宅(@monochromegane)による座学を実施しました。ここでは、現在進行中の自社サービスへの機械学習導入事例についての紹介を行いました。
研修を終えて
LLMの急速な発展を踏まえた昨年からの研修コンテンツの更新は、個人的に大きな挑戦でしたが。受講生からはポジティブな反応を得られ、その試みが成功したと安堵しています。機械学習に初めて触れた受講生から「これをきっかけに少しだけわかるようになって嬉しかった」という感想や、既に経験のある受講生から「LLMの話が興味深かった」「ハンズオンも楽しんでどんどん進めることができた」との声をいただき、非常に喜ばしいと感じています。
今回の研修がペパボのサービスへの機械学習導入をさらに進展させるきっかけになることを願っていますし、我々ペパボ研究所も事業部と連携しながら導入を進めていきたいと思います。このブログでもその成果を報告できるよう努めていきます。
【PR】パートナー積極採用中!
ペパボ研究所では、新しいパートナーを求めています。詳細については、当研究所のトップページをご覧ください。