Azure FunctionsでPythonを使うメモ(LinuxイメージのFunction追加&pyodbc&fbprophet編)
(2019/1/23訂正)
LinuxイメージのAzure FunctionsへのFunction追加ですが、基本はバイナリ依存するようなモジュールはすんなり追加できません。
それでも、pyodbcだと「--build-native-deps --no-bundler」だけでいけたのですが、fbprophetに結構苦戦して、できたりできなかったりしていたのですが・・・。
結論:fbprophetのビルドには大量にメモリを使うので・・、docker for windows上でやるときはメモリをたくさん割り当てる必要がある
作業は、WSL(Ubuntu)+docker for windows(Windows 10 pro)で実行したのですが、docker for windowsで作業する場合、VMに割り当てるメモリを設定できます。1時期4GBにしたことがあったのですが、基本は2GBでやってました。が、これがいけなかった。
2GBだとビルドも時間がかかり、挙句の果てにはエラー。4GBは割り当てましょう!
ちなみにfbprophetは、Facebook社開発の予測ライブラリです。
facebook.github.io
xxxxxx$ python -m venv venv xxxxxx$ source venv/bin/activate (venv) xxxxxx$ func init Select a worker runtime: 1. dotnet 2. node 3. python Choose option: 3 python Installing wheel package Installing azure-functions==1.0.0a5 package Installing azure-functions-worker==1.0.0a6 package Running pip freeze (venv) xxxxxx$ func --version 2.3.148 (venv) xxxxxx$ pip install pyodbc (venv) xxxxxx$ pip install fbprophet (venv) xxxxxx$ pip install scipy (venv) xxxxxx$ pip install statsmodels (venv) xxxxxx$ pip freeze > requirements.txt (venv) xxxxxx$ vi requirements.txt (※「pkg-resources==0.0.0」を削除) (venv) xxxxxx$ func host start (※ローカルでの稼働を確認) %%%%%% %%%%%% @ %%%%%% @ @@ %%%%%% @@ @@@ %%%%%%%%%%% @@@ @@ %%%%%%%%%% @@ @@ %%%% @@ @@ %%% @@ @@ %% @@ %% % : : : (venv) xxxxxx$ func azure functionapp publish MyXxxxxxFunc --build-native-deps --no-bundler Getting site publishing info... Running 'docker pull mcr.microsoft.com/azure-functions/python:2.0'...done Running 'docker run --rm -d mcr.microsoft.com/azure-functions/python:2.0'....done : : : (venv) xxxxxx$
Azure FunctionsでPythonを使うメモ(LinuxイメージのFunction追加編)
前回、DockerImage編でうまくいきましたが、DockerImageだと従量課金を選べないので、なんとかFunctinを登録する方式を探していました。ただ、思わぬ苦戦。単純な関数でもうまくデプロイできずに困っていました。
ところが、以下の投稿を発見して解決。
github.com
「pkg-resources==0.0.0」という行が、pip freezeで追加されるバグがあるようです。この行をrequirement.txtから削除することでデプロイして実行できました!どうぞお試しください!
Azure FunctionsでPythonを使うメモ(Dockerイメージ編)
Azure FunctionsはAzureのサーバーレス環境。Dockerイメージを作りそれを実行するパターンでやります。投稿を書いている時点では、Pythonサポート自体もプレビューなので、さほど情報も多くないです・・。
基本的なところは以下のページを参考に。
docs.microsoft.com
ちなみに、私の環境にはDocker or Windowsを入れるところからだったのでそこそこ長い時間をかけました。
- Windows 10をproにアップグレード
- Docker for windowsをインストール (ネットワークの設定を修正しないと使えなかった) ※前の投稿参考
- Azure系のツールをインストール ※パスを通すことを忘れない
venvの環境へプロジェクト作成
Azure functionsを作成する場合はvenv環境で実施する必要があります。
qiita.com
python -m venv venv venv\Scripts\activate func init MyFunc --docker (pythonを選択)
Functionを作成
cd MyFunc (venv) func new --name "HttpTriggerMyFunc" --template "HttpTrigger" (venv) docker build --tag my_func . docker run -p 8080:80 -it my_func
この状態でlocalhost:8080にアクセスしてみると以下の画面が表示されました!そして、apiである、http://localhost:8080/api/HttpTriggerMyFunc?name=Taro にアクセスすると、「Hello Taro!」と表示されましたよ。
Docker pullでエラー
なんと、これで解決!感謝!
naughtldy.hatenablog.jp
「現場ですぐ使える時系列データ分析~データサイエンティストのための基礎知識〜」を読みながらRでやってみたことのメモ書き1
祝日を利用して「現場ですぐ使える時系列データ分析~データサイエンティストのための基礎知識〜」という書籍を読みながらRをいじってみました。
書籍のサポートページが以下にあり、サンプルデータのダウンロードができます。
ちなみに、私は、Rはほぼ初心者です。以前にちょっとだけそれこそ体験だけしたことある程度。
R環境のセットアップ
この本ではR環境のセットアップについて1-5章あたりから紹介。以下からダウンロードできます。
Download R-3.4.4 for Windows. The R-project for statistical computing.
なお、この本では標準でついているRGuiを使って話を進めていますが、一般的にはRStudioという環境を使った方が便利そうなので、RStudioをその後にインストールします。
これで準備完了。RStudioを起動します。終了時は q() と実行するそうです。
> q()
※RStudioからだったらアプリを閉じればいいだけですが・・。
Rで時系列データをいじってみる
先に紹介した本書籍のサポートページからサンプルデータをダウンロードします。
展開すると、「演習データ」というフォルダ内に「.RData」というファイルがあるので、それをダブルクリック。
インストールしたままだと、デフォルトのRの環境に関連付けされているので、RStudioを選択します。
すると、以下のように、環境内に取り込まれます。
> load("C:/Users/xxxxxxxxxxxxxx/exercise_data/演習用データ/.RData")
で、ここで以下のコマンドを実行すると、取り込まれたデータの一覧を表示できます。
> ls() [1] "data.cum.core30" "data.cum.core30.2" "data.cum.return" [4] "data.cum.return2" "data.cum.train" "data.cum.train.2" [7] "data.log.core30" "data.log.return" "data.log.return2" [10] "data.price" "Date" "label" [13] "price4" "return4" "sample1" .......
ここでprice4の中身を見てみる。
> price4 x5202 x7272 x4927 x4502 1 55 682 2460 3595 2 56 672 2543 3575 3 56 668 2544 3570 4 57 674 2500 3500 .......
データx5202を示すには、以下のように$で繋げてフルパス的に指定する必要がある。
> price4$x5202 [1] 55 56 56 57 60 62 61 59 58 60 62 63 66 66 65 66 66 62 61 60 62 66 66 71 73 [26] 73 73 74 72 70 68 68 68 72 74 74 81 85 86 90 87 86 91 92 92 91 89 91 90 86 .......
ここで、price4をattachしておくと、x5202を直接指定できる。
> attach(price4) > x5202 [1] 55 56 56 57 60 62 61 59 58 60 62 63 66 66 65 66 66 62 61 60 62 66 66 71 73 [26] 73 73 74 72 70 68 68 68 72 74 74 81 85 86 90 87 86 91 92 92 91 89 91 90 86 .......
attachはusingやVBのwithみたいなものか。そのままだと、以降に収集つかなくなるのでdetachしておくのがおススメの模様。
> search() [1] ".GlobalEnv" "price4" "tools:rstudio" "package:stats" "package:graphics" ....... > detach(2)
attachすると2番目に追加されるというのが、rの世界の常識の模様・・。
まずはグラフを書いてみる!こういったことが簡単にできるのはありがたいですね♪
> attach(price4) > par(mfcol=c(2,2)) > plot(x5202, type="l") > plot(diff(log(x5202))*100, type="l") > hist(diff(log(x5202))*100, breaks=seq(-10,20,2)) > detach(price4)
他にも、相関を見る散布図とかも簡単に描けます。
時系列データをいじってみる
話の流れ的にはARモデルの話なので、例えば株が前日にあがっていると、今日も上がりやすいとか、前日の挙動との相関があるかを調べます。
> plot(x=X.return[1:99], y=X.return[2:100])
ひとつ前のデータとはなんだか相関がありそうです。では、二つ以上前のデータとの相関も見てみます。Rには便利な関数が用意されています。
> acf(X.return)
なんでもそろってますね。この図はコレログラムというそうです。で、この図は自己相関係数を求めたものですが、例えば2ラグ2との相関にはラグ1との相関も含まれてしまっています。このテキストでは以下のようにわかりやすく説明されていました。
a. 今日の値には昨日の値が関係する。
b. 昨日の値には一昨日の値が関係する。
のいずれも成り立ちます。それならばaとbを組み合わせて、
c. 今日の値には、昨日の値を通じて一昨日の値が関係する。一方で、一昨日の値が今日の値に関係している直接的な関係を調べるには、昨日の値の影響を除去することが必要となります。
このような係数を、偏自己相関係数というそうです。Rではこれも簡単に求められます。スバラシイ!
> acf(X.return, type="p")
今回はここまで。続きがあるのかは・・、不明。
「Azure DB for PostgreSQL/MySQL開発マネージャと話そう!(通訳&ビール有)」に行ってきました (2018/3/13@品川)
今日は久々に勉強会に参加♪
ossonazure.connpass.com
そのメモ書き。
- Azure Database for MySQL and PostgreSQLはコミュニティ版を入れていて、その最新を入れるようにしている。
- OSS on Azureをしっかりやらないと、Azureのサービスが危うくなりかねない。
- Azureに載せるときに修正が必要になる場合、きちんとアップストリームに修正をコミットする。
★MariaDBも同様だとすると、MySQLに比べてMariaDB on AzureはMySQLに比べて高機能??
- High availability built-inでは、ゲートウェイみたいなのがいて接続先の切り替えとかを自動的にやるので、"Virtually no app down time"を実現。レプリカの用意が不要。on-the-flyでのスケールアップ/スケールダウンが可能
- いつリリースされるんですか?(リリースされるまでは無料で使える)
- 用途を考えるとIaaSの方がいい場合もある
- PostgreSQLはIngres由来、開発はみんなで
- 年に1回のメジャーバージョンリリース
- 組み込み言語にいろんなスクリプトが使えるのが特徴(Pythonなど)
- PostGISがある(GIS界のデファクト)
- 9.6からマルチコアの性能を活かせる、96コアでも!セッション数を増やすとそれに合わせてスケール
- OLAPで複雑クエリをマルチコアで実行可能(パラレルクエリ)
- リリースはいつだ(Azure)←同じ話を去年もした
- 昔はオープンのPostgreSQLでシステムを作ったことがステータスだったが、今は普通に使われており最近は事例の情報が出なくなった
- EDB, PowerGres, Symfowareなどの多くのPostgreSQLベースの商用データベース
- PG11は?並列処理強化、パーティショニング強化
セミナーセッションはここで終わり♪
「GAしそうです」のカンパーイ!
※数日内か?
ここから、飲みながらディスカッション~♪
- ORCAS:コードネーム
- PostgreSQLはコミュニティがロゴの版権をもっている
- MySQLはオラクルが持っているのでロゴをつかえない→シャチ(ORCAS)
- 実は去年中にGAになるはずだったが、GAの時期が伸びたのはなぜか?
- 苦笑しながら・・・、品質と性能を重視したため。MSの中でも注目されている。
- 独自拡張はするのか?今はしない方向か。
- MSは某クラウドベンダーとは異なりユーザーの声を聴くようになっているよ、昔と違って。
- GAだとどのくらいのサイズまで使えるか?とりあえずは1TBまで。※10TBくらいはないと困るし、数年後には100TBは欲しい。
- マニラにはPostgreSQLユーザーはいなかった。
- DWHも欲しいけど・・・日本のお客はデマンド高め。
- 諸外国の事情に合わせるとしょぼいままになってしまうかも。例えば、外国で、ポスグレで100TB使うというのはない。
- イチローが戻ってきたからシアトルも楽しいよ
- 今はCPUのリソースのモニタリングしかできないが、メトリクスモニタリングのためのAPIも用意される予定。
- Generation 4とGeneration 5はプロセッサの世代の違い
- Attunity Replicate for Microsoft Migrationsいいよ
以上!
久々の勉強会は面白かった!
追記:
3月20日、GAが発表されました!
azure.microsoft.com
AI・業務自動化展に出展(2017/11/8@幕張メッセ)
お仕事でAI・業務自動化展(10/8-10)に出展しました。
www.ai-auto.jp
大盛況
我々の出展もそれはそれは大混雑で、今回展示したソリューションの関心の高さがうかがえました。
RPA
今回、AI・業務自動化展というのに出展したのですが、まわりを某N〇〇グループのRPAソリューションに囲まれた場所でした。各社異なる会社として出展されていたのですが、同じRPAパッケージを展示していて、社員も大量につぎ込んで道路ふさぐふさぐ・・・・。そのおかげで、行き場を失った来場者の方が弊社のブース側を歩いてくれて、我々の展示が目に留まったこともあったと思われます♪
しかし、RPAは最高にバズってますね。これほど、技術的に何も新しくないのになんか盛り上がりを見せてるものも最近では珍しい気がします。
ロボティック・プロセス・オートメーション - Wikipedia
RPAが目指すのは伝統的なIT部門スタッフ向けのプログラミングベースの自動化ではなく、ITナレッジの少ない業務部門スタッフ向けの直観的な操作で構築可能な自動化である。
つまるところ、マクロを書けない人のためのマクロ作成ツールのようなものでしょうか。技術的に新しくないし難しくないから業界にプレーヤーがたくさんいるし・・・。画面を人が操作しているかのように操作するらしいので、UIのテストツールに近いとも言えますね。
幕張メッセ遠い
東京に出張でいったときは、実家のある藤沢に泊まっているのですが、幕張は二時間コース。それはそれは遠かった。
その中でも、以下の夜も定食を食べれるお店にはお世話になりました!
r.gnavi.co.jp
帰りは、JR東海道線(上野東京ライン)はグリーン車デフォでしたね。
MA見たかった
私は今はマーケティングの部署にいるため、それこそMAツールなども使ってるわけです。
で、いろいろと使いづらさを感じているのですが、MAツールも今回たくさん展示されていたのですが、
見に行く暇が全くありませんでした。