フリーランチ食べたい

No Free Lunch in ML and Life. Pythonや機械学習のことを書きます。

Firebase Cloud Functionsの環境変数はRuntimeによって変わるので注意

タイトルで全部言ってしまっているのですが、ハマったので同じハマり方をしている方の検索用にメモっておきます。

自分がぶつかったのはGCLOUD_PROJECTでFirebaseのproject_idを取得して環境ごとに処理を切り分けたかったのですが、GCLOUD_PROJECTが何故か参照できなかったという問題でした。

2019-08-20現在の情報なので、時間が経過している場合は必ず公式ドキュメントを当たるようにしてください。

TL;DR

  • Node.js 10ではGCLOUD_PROJECT/GOOGLE_CLOUD_PROJECTは使えない
  • Node.js 10ではJSON.parse(process.env.FIREBASE_CONFIG)["projectId"]を使う
  • GCLOUD_PROJECTはdeprecatedなのでGOOGLE_CLOUD_PROJECTを使う
続きを読む

SageMakerをFargateで定期実行する環境をServerless Frameworkで一発でつくる

機械学習のモデルを学習する、あるいは推論APIを作成するにあたってSageMakerはとても便利ですが、 定期実行する機能をSageMaker自身では持っていない という問題があります。

このエントリでは、Serverless Framework(以降、Serverless)を使って素早くSageMakerの定期実行環境を構築する方法を紹介します。

以下が構成図です。

f:id:ikedaosushi:20190804213225p:plain

この環境を構築は、下記を前提としているのでご留意ください。

  • VPC、サブネットは既に作成しているものを利用する
  • 学習用のデータはこの環境以外からアップロードされる

またコードはすべて以下のリポジトリにアップロードしており、これをベースに説明をしていきます。

github.com

続きを読む

カックさんのブログメンタリングを3ヶ月受けたら色々X倍になった / 卒業ブログ

カック@ブロガー / k9u@kakakakakku さんに2019年4月~6月の3ヶ月間ブログメンタリングをしていただいていました 🙏 「どんなアドバイスをもらったのか」「どんな効果があったのか」を書きたいと思います。これを読んで、ブログメンタリング応募が増えたりカックさんの素晴らしいブロガー能力/メンタリング能力が伝われば嬉しいです。それくらいしか恩返しができないので…

「そもそもブログメンタリングって何?」と思った方はカックさんが「DevLOVE X」で詳しく発表されていたので、こちらをご覧ください。

kakakakakku.hatenablog.com

続きを読む

Amazon PersonalizeとServerless Frameworkを使って半日でレコメンドAPIを作成する

前回の記事でGAになったばかりのAmazon Personalizeの使い方の解説をしました。 ただ、前回の記事では実際にアプリケーションから利用するところ、つまりWeb APIとして公開するところまでは書くことができませんでした。

ということでこの記事では、Serverless Frameworkと組み合わせることで半日でレコメンドAPIを公開する方法を書きたいと思います。

基本的なワークフローの解説については下の記事を参照してください。

blog.ikedaosushi.com

またコード全体はGitHubにアップロードしており、記事の最後に記載しています。

それでは早速レコメンドAPIを作成していきましょう。

続きを読む

Amazon Personalize使い方まとめ / CloudFormationとPythonでレコメンドアプリケーションを学習・デプロイする

今週、Amazon PersonalizeがGAになりました。東京リージョンでも使うことができます。

この記事ではAmazon Personalizeの概要、使い方の解説を行います。PythonのAWS SDKを使ってレコメンドアプリケーションを作成していきます。

また事前準備のS3やIAM Roleの作成で、AWSの公式ドキュメントだと手作業が発生しているのですが、それだと大変なので一発で構築できるCloudFormationも紹介します。

aws.amazon.com

最初に触った感想

少し触ってみたのですが、以下の点で非常に良いと思いました。

  • 学習・予測(レコメンド取得)が全てサーバーレスで行える
  • 事前に準備されているアルゴリズムはDeep Learningベースで多く、それ以外も高度なもの

逆に以下のような不満な点もありました。

  • 用語が機械学習で一般的に使うものとかけ離れていて混乱する
  • ARNを引数に渡す処理が多く、CloudFormationで管理したいがまだ対応していない

1つめの不満点はこの記事で図解して解説してみました。2点目はCloudFormationに対応するのを待ちたいですね。

続きを読む

【組み合わせ最適化入門】カンファレンスのタイムテーブル決めをマッチング問題としてGoogle OR-Tools/Pulp/munkresで解く

f:id:ikedaosushi:20190606171352p:plain

PyCon JPの運営メンバーとして自分は、昨年度のPyCon JP 2018のタイムテーブル決めに組み合わせ最適化問題を用いました。ちなみに最終的なタイムテーブルはアルゴリズムで算出された結果を人間がレビューして調整しています。 昨年度は時間の制約があり、いくつか反省点があったので今年は改善したいと考えています。

pyconjp.blogspot.com

そういうわけで事前調査も兼ねて、カンファレンスのタイムテーブル決めを組み合わせ最適化問題として考え、それをPythonのライブラリを使って解く方法を書きたいと思います。

続きを読む