Building Serverless Machine Learning Models in the Cloud (ServerlessConfセッション紹介)

セクションナイン吉田真吾@yoshidashingo)です。

第4弾は海外のスピーカーの紹介です。エンジニアでありジャズミュージシャンでもある Alex、インタビューの最後ではコード(Code)とコード(Chord)の類似点なども聞いてますのでぜひじっくりお読みください。

プロフィール

  • 名前: Alex Casalboni
  • 会社: Cloud Academy, Inc.
  • 職種: シニアソフトウェアエンジニア

f:id:yoshidashingo:20160909191456j:plain

アレックスは Cloud Academy のシニアソフトウェアエンジニアでありジャズミュージシャン。好きなことは JavaScript や Python でウェブアプリケーションや機械学習モデル、サーバーレスなマイクロサービスを作ることです。

Quick Chat

---- 日本に来てくれるということでありがとうございます、来日中にやろうと思ってることはありますか?

はい、10/6まで東京の美しい場所に宿泊する予定なのと、途中京都と大阪をちょっと駆け足で回ってくる予定です。

日本に行くこと自体が初めてなので、早く日本中の古式ゆかしい文化に触れてみたいです。

---- それはよかった、ぜひ楽しんでください。では ServerlessConf Tokyo でのセッション概要を教えてください

私のセッションではデータサイエンティストが機械学習モデルを本番環境にデプロイするためのチャレンジについてお話します。

A/Bテストや高スケーラビリティや高可用性を備えた、Pythonライブラリとマルチモデルでできたシステムの参照実装や例についても触れます。

また、伝統的なデプロイ戦略の限界について語りながら、サーバーレスコンピューティングでデプロイのワークフローがいかに単純にできるかデモもお見せします。

---- たしかに、正しいモデルを構築するのって非常に難しい課題ですよね。サーバーレスな構成だとこのプロセスをもっと早く実現できるってことですか?

私は日々とても優秀なデータサイエンティストたちと働いてるのですが、サーバーレスな技術を使うことで彼らはすばやく仕事にとりかかれて、最高の機械学習モデルを構築するという重要な目標にフォーカスすることができています。

サーバーレスな手法で考え、開発することで、彼らはインフラやオペレーション、スケーラビリティ、可用性などなどに関連したほとんどの問題から解放されます。と同時に、彼らはとくに助けなしに、A/Bテストやモデルの改善をくわえてデプロイすることができます。それは最終的に、チーム全体や会社全体にとってより高品質な結果を残すことになります。

---- ちまたにはたくさんの機械学習のサービスやフレームワークツールがありますが、どれを使えばいいか選定するためのオススメの方法はありますか?

その選択はさまざまな要因に依存します。

  1. そのアプリケーションやシステムが現在どこで稼働しているか ほとんどのクラウドベンダーが多大なる努力をもってロックイン障壁を取り除いてはいるが、MLaaS オプションはたいていの場合そのクラウドプラットフォームの他のサービスと合わせて使いやすいように統合されていたりするのも事実です。明らかなネットワークの近さという利点を評価に加えなかったとしても、現在利用中のクラウドベンダー上のサービスというのは最優先の選択肢ではあります。

  2. どのレベルまでのコントロールを求めているかあるいは必要としているか すべての MLaaS オプションはモデル設計における異なったレベルのコントロールを提供しています。たとえば、モデリングのロジックやデータ処理によりディープなコントロールが必要な場合もあれば(例:Azure Machine Learning)、その他の多くの場合は単純なブラックボックスなインタフェースで十分な場合が多いでしょう(例:Google Prediction API)。個人的には完璧な MLaaS ソリューションは可能な限り抽象化された状態で代替案を広く網羅しているべきで、Amazon Machine Learningはその望むべき方向に向かっていると思います。

  3. ほんとうにMLaaSが必要かどうか あなたがデータサイエンティストである場合は特に、頻繁にモデルを完全にコントロールする必要があるでしょう。これらのケースでMLaaSのソリューションはあなたのニーズを満たさないかもしれないですが、そんなときはクラウドコンピューティングのメリットを活かしてサーバーレスなクラウドに機械学習のモデルをデプロイするといいでしょう、たとえば AWS LambdaAzure FunctionsGoogle Cloud Functions などです。

ここらへんのサーバーレスと機械学習についてはもう少し詳しく 個人ブログ に書いておきました。

blog.alexcasalboni.com

---- ありがとうございます。ところで普段仕事ではどんなことをやってるんですか?

私は2013年に非常に初期の従業員として Cloud Academy にジョインしました。つねに情熱をもってウェブ開発や Cloud Academy を立ち上げていくことはとても楽しかったです。チームが急速に成長した今はいくつかの面白い役割をカバーしているという状況です。 シニアソフトウェアエンジニア として私は新しいクラウド技術を学ぶ学生を手助けする目的で新しい教材を設計し、作成しています。また クラウド・エバンジェリスト として新しい学生やITプロフェッショナルたちにクラウドコンピューティング、とくにサーバーレスの部分で最適のアプローチを見つけてもらうための動機づけや支援ができてハッピーです。

---- ジャズが好きなんですね?コード(Code)とコード(Chord)で似ていることってあるんですか?

ジャズが大好きで、サキソフォンとピアノ奏者を12歳からやっています。両親もミュージシャンだったのでこの素晴らしい情熱を共有していました。

とても似ている点でについてですが、私はコーディングを15歳からやってますが、それ以来つねにこの2つの世界はとても関係が深いと考えています。どちらも個人的な情熱や創造性、問題解決を共有しあう手段であると同時に、そのためにはたくさんの技術的なスキルや自然の法則や構造的な思考、ロジックやサイエンスが求められるという点です。

---- ありがとうございました、会えるのを楽しみにしてます!

ありがとうございました、私もほんとうにあなたやServerlessConfの参加者のみなさんにお会いできることが楽しみです。

イベントでは気兼ねなくお声がけください。Twitter でもどうぞよろしくお願いします。

Firebaseを使ったサーバーレスWebアプリケーション開発 (ServerlessConfセッション紹介)

セクションナイン吉田真吾@yoshidashingo)です。

第3弾はフロントエンド開発者であるきはるさんです。

プロフィール

  • 名前:佐々木季羽る Kiharu Sasaki
  • 会社名:freelance, Section-9
  • 職種:Frontend Developer

f:id:yoshidashingo:20160907073136j:plain

SIerで通信系システムの開発に携わった後、コンサルティング会社にて金融系エンタープライズシステムを担当。フリーランスとして独立後は、Webアプリケーション開発を中心に活動中。流しのフロントエンドエンジニア。Section-9メンバー。

Quick Chat

---- ServerlessConf Tokyoでのセッション概要を教えてください

Firebaseは、Googleが提供しているバックエンドサービスです。

アプリケーションに必要なサーバー、DBの構築や運用が不要なのはもちろん、データに連動してREST APIが自動で作成されるリアルタイム同期データベース、各種プロバイダでのユーザー認証、オフライン処理、画像や動画のアップロードが可能なストレージ、ホスティングまで、バックエンドに必要とされるほぼすべての機能を備えたFirebaseを使うことで、フロントエンドの開発に注力することが出来ます。

モバイルバックエンドサービス(MBaaS)として語られることが多いFirebaseですが、今回はWebアプリケーションにおける利用方法についてお話します。

---- 最近フロントエンドで使ってるのってどういったフレームワークですか?

最近のフロントエンド界隈では、Reactの人気の高さや、Angular2への期待感が何かと話題です。今後もしばらくはこの2つが話題の中心だと思います。また、「リアクティブ」「コンポーネント」といったキーワードも重要なので、フロントエンド以外の方も抑えておくと良いです。

私自身は、業務ではAngular1、Vue.jsを使っていて、過去にはBackboneも使っていました。Reactの導入も検討中です。(※個人的にはAngular2とVue.js推しです)

フロントエンドは移り変わりが激しいとよく言われますが、それはWeb標準の変化速度が早いせいでもあり、高レイヤーな技術ほど影響を受けるのは必然とも言えます。ですので、今後もWebが進化し続ける限り、どれか1つのフレームワークに落ち着くことはないだろうと思っています。

---- Firebaseがよい点は具体的にどういうところですか?

まず、とにかく簡単だという点です。DBのデータ取得がJSで1行で書けるくらいに簡単です。ソーシャルアカウントでのユーザ登録やログイン処理も、数行で実装出来てしまいます。

機能面で決定的なのは、オフライン処理とリアルタイムデータ同期です。昨今では、Webアプリケーションであってもネットワーク接続に依存せず、オフラインでもユーザが操作を続けられ、ネットワークが復帰した際にはスムーズにデータが同期されるといった、モバイルアプリに近いUXを求められる流れ(プログレッシブウェブアプリ)が来ています。実際これをWebで実現するのは容易ではありませんが、Firebaseを使えば開発者が意識することなく実現出来てしまいます。

---- Firebase以外によくバックエンドとして利用するサービスはどういうものがありますか?

業務ではBaaSを利用すること自体が稀で、機能ごとに外部サービスを組み合わせて利用することが多いです。モバイル(MBaaS)であれば国産も含めいくつかありますが、WebのBaaSは選択肢がかなり限られるかと思います。

---- フロント/バックエンド全部やってると実際のところ工数配分ってどのくらいですか?

SPA(シングルページアプリケーション)でない案件だと半々くらいです。デザインも担当している案件だと、UIに一番時間がかかっているかもしれません・・・(^^;

---- フロントエンドからインフラまでプロレベルで1人で見られる人って実際多くないと思うけど、きはるさんのような人がもっと増えて欲しいですか?

私自身はインフラ部分は必要最低限でしか関わらないようにしているので、フルスタックとは言えないのですが、フルスタックな人(またはそれを目指している人)は、CTOなどテクニカルのトップにでもならない限り、ただの器用貧乏で終わってしまうので勿体無いかな、と。なので増えなくてもいいと思います(笑)

ただし専門分野以外の知識がゼロなのは論外だし、最近ではフロントエンドとサーバーサイドの境界線も曖昧で、兼務している人も多いので、関連性が強い領域についてはある程度守備範囲を広げていく必要もあり、そのためには日々の情報収集や学習が大切だと思っています。

---- ありがとうございました、当日はもっと突っ込んだ話を楽しみにしています。

ありがとうございました。

まとめ

フロントからバックエンドまですべて面倒を見る場合に、すべてを自前で準備するのは限界があります。そのためにフレームワークやBaaSのサービスを使うほうが開発生産性の面で有用なのは明らかです。重要なのはキャッチアップし続ける姿勢ということでしょう。

開発体制やFirebaseの運用上の注意点などについては今回お聞きしませんでしたので、興味のある方はServerlessConfに参加してください。

tokyo.serverlessconf.io

先週のAWS関連ブログ〜9/4(日) - 小島ロスでもJAWS-UGは走り続ける

セクションナイン吉田真吾@yoshidashingo)です。

ちょっと涼しくなってきましたね。気づけばもう秋です。

先週は小島ロスがあまりにもデカかったですが、個人的にもサーバーレスコミュニティを始めたり、JAWS-UG横浜のリブート計画を立てたりと、コミュニティについてあらためて考えることが多かったなと思いました。 JAWS-UG横浜支部は11月、12月に横浜のどこかで勉強会を開催したと思っているので、興味のある横浜近辺のエンジニアさんや会社さんで運営手伝ってくれたり、会場貸してくれるというところがあればご連絡いただきたいです。30〜60人くらいの規模を想定したいと思います。

それでは行ってみましょう。

AWS公式

1. Amazon Aurora 1.7で3つのアップデート

  • Parallel Read Ahead
    • テーブルスキャン時にメモリ上のデータベースキャッシュに並列で追加ページをプリフェッチを行うことで「レンジselect」「フルテーブルスキャン」「ALTER TABLE」「index作成」が従来比最大5倍に高速化
  • Faster Index Build (現状はまだaurora_lab_mode)
    • Indexツリーを構築するときにリーフノードを最初に作り必要な親ページを追加していく方法でリーフノードのデータ移動を軽減し、index追加やテーブル再構築が最大4倍高速になる
  • NUMA-Aware Scheduling
    • 2つのCPUがそれぞれ専用区画くアクセスするときは効率がよいが、他方へのアクセスを行うスケジューリングスレッドのジョブを効率よく扱えるようになった。

リンク:Amazon Auroraアップデート – Parallel Read Ahead, Faster Indexing, NUMA Awareness | Amazon Web Services ブログ

2. CloudWatch Logs とダッシュボードを改善

  • ログの表示方法の改善、検索機能の改善、フルスクリーンモードやダークテーマを追加

リンク:CloudWatch Logs とダッシュボードを改善 | Amazon Web Services ブログ

3. AWSのコストや使用状況レポートをRedshiftやQuickSightにアップロードできるようになった

  • Redshift: S3に届いたHourly/DailyのリポートをSQLクエリをカスタマイズしてpsql接続してクエリを実行してRedshiftの新規テーブルへ、
  • QuickSight: S3に届いたHourly/DailyのリポートのURLをコピーしてQuickSightのソースデータに指定してインポートしてグラフ化
  • マネジメントコンソール上での操作や、コマンド作業が必要というのがいまいちなので改善を求めたい。

リンク:新発表 – Redshift や QuickSight で AWS のコストや使用状況レポートのアップロードが可能に | Amazon Web Services ブログ

4. AWS SDK for React Native (developer preview) リリース

  • AWS SDKのReact Native(ネイティブアプリのフレームワーク)用がリリースされた
  • 現在developer preview版なので扱えるリソースは「S3」「DynamoDB」「Lambda」「SNS」に限定されている
  • ドキュメントのIssue立てたら超高速で修正されて取り込まれたので開発速度は速そう

github.com

5. Amazon RDS for Oracle が Oracle Enterprise Manager (OEM) Cloud Control をサポート

  • 従来11gまででもOEMは使えていたが、今回Oracle Enterprise Manager Cloud Control for 12cで、Oracle Management AgentをDBにインストールしてエージェント経由でさまざまなデータが取れるようになった。
  • Management AgentのportはOEMの1158ではなく3872

リンク:Amazon RDS for Oracle が Oracle Enterprise Manager (OEM) Cloud Control をサポート

6. New – Auto Scaling for EC2 Spot Fleets

  • EC2 Spot FleetがAuto Scalingに対応したことで、ECSやSQSを用いて配下のEC2 Spot Fleetのワークロードが上がった場合に自動でスケールさせることができるようになった。
  • 簡単に設定はできるが、アプリケーションを管理する側のサービスとの連携をどうやるか、詳細な基準などはドキュメントを参照する必要がありそうなので、別途エントリーで一気通貫でのセットアップ方法などを検証したい。

リンク:New – Auto Scaling for EC2 Spot Fleets | AWS News Blog

7. Amazon Cognito Adds a User Import Tool and AWS CloudTrail Support for Your User Pools

  • Amazon Cognito User Pools がユーザーリストをCSVでインポートできる機能を追加。
  • Amazon CognitoのAPI履歴をCloudTrailがロギングするようになった。

リンク:Amazon Cognito Adds a User Import Tool and AWS CloudTrail Support for Your User Pools

AWS関連

8. JAWS-UG生みの親小島さんがAWSJを退職

  • 6年9ヶ月AWSJに在籍し、コミュニティマーケティングの第一人者としてJAWS-UGをここまで大きくした立役者である小島さんが退職。
  • 本人曰く「JAWS-UGはすでに自走している」からもう大丈夫なんだそうだがこちらとして寂しいものは寂しい。
  • そういえばすだちくん勉強会で「早いものが遅いものに勝つ」という話をしてたのが非常に響いた。時間をかけても精度を上げられる確証がないことは多い(全部がそうだとは言わないが)が、スピードは確実に早いか遅いか計測可能なのでスピードにこだわる意識が大事。

ascii.jp

その他

9. 伊藤直也の1人CTO Night

  • 第1部は「開発組織マネジメントのコツ」について直也さんからプレゼン:マネジメント→正しい問題にフォーカスさせる。チームでラーニングしたことが組織に蓄積する構造。リフレーミング。信頼を勝ち取る。などなど金言多数。
  • 第2部は玉川さんとパネルディスカッション。ROI見て開発するとリファクタリングする猶予がない話。採用はブログや有名人よりまず職務規定書。信頼は地道に積み重ねるしかない。などこちらも金言多数。

https://doda.jp/event/seminar/20160830.htmldoda.jp

itosho525.hatenablog.com

speakerdeck.com