フリーランチ食べたい

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

Aurora Serverless Data APIとLambdaでAPIをServerless Framework(CloudFormation)で作る

昨年末のAurora Serverless Data APIの登場で、Lambdaからの利用が簡単になりました。この記事ではServerless Framework、CloudFormationを用いて、Aurora Serverless Data APIとLambdaを使ったAPIを構築する方法を紹介します。

f:id:ikedaosushi:20190525233641p:plain

使ったコードはすべてGitHubに上げています。記事内ではわかりやすさのためコードを抜粋して記載しますのでコード全体を確認したい場合はそちらを参照してください。GitHubのリンクは記事の最後に貼っています。

続きを読む

【Python】 機械学習の可視化が捗るライブラリ「Yellowbrick」

f:id:ikedaosushi:20190516184158p:plain

機械学習Podcast「TWiML&AI」で先週取り上げられた可視化ライブラリ「Yellowbrick」が非常に便利だったので紹介します!ちなみにPodcastには作者の1人であるRebecca Bilbroさんが出演しているので興味持った方は是非聞いてみてください。

twimlai.com

www.scikit-yb.org

Yellowbrickとは

一言で言うと、機械学習に特化した可視化ライブラリです。実装的な面で言うと(こちらの方がわかりやすいかもしれません)、scikit-learnとmatplotlibをラップして、scikit-learnライクなAPIで使うことができるものです。

例えば相関行列のヒートマップをプロットしたい場合は次のように書くだけでグラフを作ることができます。

visualizer = Rank2D(features=features, algorithm='pearson')
visualizer.fit(X, y)
visualizer.transform(X);

f:id:ikedaosushi:20190516144509p:plain

なんと、たった3行で書くことができてしまいます。

※一応補足ですが、matplotlibやseabornでは相関係数の計算は自分で行う必要があります(seabornで書く場合のコード)。そこをYellowbrickが良い感じにやってくれる、ということですね。

続きを読む

CloudFormationのOutputsを活用してServerlessプロジェクト内の情報を外部と共有する

Serverless内で使っている環境変数を外部と共有する方法を紹介します。Serverlessでは設定ファイル内でCloudFormationを書くことができ、そこで作成したS3などのResourceをServerlessプロジェクトから使うことができます。この機能はとても便利なのですが、作りたいアプリケーションが、常にServerlessだけで完結できるとは限らず、ときにはServerlessプロジェクト外のスクリプトから、Resourceの値を参照したい場合があります。

例えば、以下の記事ではSageMakerの学習にあたってServerlessプロジェクト外の環境からSageMakerのAPIを呼び出しています。具体的には、「ローカルスクリプトで学習」「Serveless(Lambda)から予測」という感じです。

blog.ikedaosushi.com

こんなときに、どうやってServerlessプロジェクト外のスクリプトからServerless内のResourceを参照すれば良いか、について書きたいと思います。

続きを読む

SageMakerとServerlessを組み合わせて、お手軽にscikit-learnの機械学習APIを作る

SageMakerとServerlessを使ってscikit-learnの機械学習APIを作る方法を紹介します。

f:id:ikedaosushi:20190505183712p:plain

公式ドキュメントやその他の記事の多くはコンソール操作やnotebook上での操作が多く含んでいて、そのコードのまま本番運用に使うのは難しいと感じたので、この記事では コンソール操作やnotebook上での操作なしでスクリプトだけで完結 できるようにしています。カスタマイズすれば本番運用で使えるはずです。

また公式ドキュメントにもExampleがいくつかあるのですが、色々な処理を含んでいて、自分には理解し辛い部分がありました。今回、SageMakerを理解するためにもっとシンプルなToy Exampleを作ってみました。

  • 作るもの
  • 環境
  • アーキテクチャ構成
  • フォルダ構成
  • 事前準備
    • Layer作成
    • Resource作成/環境変数定義
    • 学習用のデータをS3にアップロード
  • モデル学習&デプロイ
    • 学習スクリプトの準備
    • 学習&デプロイ
    • 予測API作成
  • さいごに
続きを読む

【Python】もうprintデバッグはいらない? / PySnooperで楽々デバッキング

Hacker NewsとRedditでバズっていたPythonのデバッグツールが便利だったので紹介です! PySnooperというライブラリです。

※追記

想像以上にたくさんの方に読んでいただき、printデバッグなど他のデバッグ方法との比較について追記として文末に補足しました。釣りタイトルですみませんでした…🙇

f:id:ikedaosushi:20190428000712p:plain

続きを読む

AWS BatchとServerlessを組み合わせて高速に定期実行バッチやバッチAPIを作る

AWS Lambdaで行えないような重い処理はAWS Batchを使うと簡単に行うことができますが、定期実行したりエンドポイントを作る仕組みはAWS BatchにはまだなくCloudWatchやAPI Gatewayと組み合わせる必要がありますがServerlessと組み合わせることで簡単に実現できるので紹介します。

f:id:ikedaosushi:20190427105206p:plain

続きを読む