エンジニアの池田(@progrhyme)です。昨年11月に私がエムスリーにjoinして、早2ヶ月が経ちました。現在は、主に電子カルテ事業やAI関連事業のサーバーサイドを担当しています。本日は、私がAPIシステムの構築に携わった、機械学習を利用したニュース記事の推薦システムについて紹介します。今後について終わりに「Archimedes」とはこのシステムは、社内で「Archimedes」というコードネームで呼ばれています。以降、本記事でもこのシステムをArchimedesと記します。Archimedesはm3.comやメールマガジンを送信するシステムのバックエンドで動作し、ユーザにおすすめのニュース記事を出力します。APIを提供しており、ユーザ単位でおすすめ記事のリストをレスポンスとして返却することが可能です。学習・推薦アルゴリズムについてArchimedesでは以下のような流れで、機械学習を行ってユーザへのおすすめ記事を算出します。同T期間におけるユーザのニュース記事アクセスログから、ユーザのトピックに対する嗜好を計算する。ユーザのトピック嗜好ベクトルと、記事の持つトピックベクトルの相関が強いほど、おすすめスコアがUPする。上で算出したスコアと、直近の記事アクセスランキングを掛け合わせて、各ユーザに対するおすすめ記事を算出する。ここで、トピックモデルとは、テキスト中に出現する単語の頻度などに着目して、文書の話題(=トピック)を推定する自然言語処理の手法のことです。*1Archimedesでは、上のフローのように機械的に算出した結果だけでなく、編集部が手動で設定したニュース記事を必ずリストに含めるような仕組みも設けています。ECS上でDockerコンテナとして稼働しています。Talkで、Archimedesのシステム構成について発表しました。そのときのスライドを公開しておりますので、本記事と併せてご覧いただければ幸いです。Kiyoshi以下、スライドと重複する内容もありますが、システム構成について簡単に紹介します。システム概要Archimedesシステムの概要は上図のようになります。※図では、ログ送信などのバックグラウンドのシステムや、VPC・AZ構成など細部は省略しています。主なコンポーネントはAPIを提供するフロントエンドのECSクラスタと、機械学習を行っておすすめ記事のリストを作る学習用ECSクラスタの2つです。Auroraを利用しています。Codeの実践Archimedesのインフラは(ほぼ)全てコードとして管理しています。PackerのProvisionerとして利用。AWS上のインフラ・トポロジーを管理Ansibleは、エムスリーの他の多くのチームでも利用されています。PackerやTerraformについては、私は初心者だったのですが、公式ドキュメントを始めWeb上の情報リソースが豊富にあったこと、前任者が残していったレシピがあったことから、比較的すぐにキャッチアップできたと思います。上述のようなシステム構成とツールを採用することで、Immutableなインフラを作ることができました。アプリケーションやAMIに変更があったとき、容易に既存のサーバリソース(〜ECSクラスタ)を破棄して作り直すことで、更新することが可能です。インフラ管理に加えて上記のような変更の反映もTerraformで完結させることができ、運用コストも抑えることができたと思います。APIを使ったニュース記事推薦の仕組みは、まだ一部ユーザに向けて動き出したばかりですが、今後エムスリーグループで提供する他のサービスへの展開も検討されています。システム的には概ね安定しているのですが、優先度の高いタスクとしてパフォーマンス改善に取り組んでいく予定です。終わりにエムスリーでは、機械学習エンジニアの他、機械学習基盤を支えるインフラエンジニアや機械学習システムのAPI化を行うソフトウェアエンジニアを積極的に募集しています。Pairの作成などが挙げられますが、いずれも環境ごとに1回ぐらいしか作業しないようなものです。AI・機械学習チームの岩月です。AI・機械学習チームの笹川です。開催しましたこんにちは。2019」にことりスポンサーとして協賛&社員が登壇しますこんにちは、エンジニアリンググループの渡辺です。月別アーカイブ注目記事はてなブログをはじめよう!m3techさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。