令和の機械学習Azure Hands Onの参加メモ
講師
- 山本 和貴
- 株式会社FIXER データ・サイエンティスト
- このハンズオンは採用活動の一貫らしいので、joinしたい人は参加するのもあり
メモ
- これまでの機械学習
- 全て手作業(データ収集、クレンジングや加工、特徴量設計、モデル設計や構築、評価、デプロイとかとか)
- 例えるなら洗濯板での洗濯みたいなもの
- これからの機械学習
- 大部分を全自動で行うことができる(上で言うところ特徴量設計からデプロイあたり)
- 例えるなら全自動洗濯機
- Auto ML + MLOps
- de:codeではAzure NotebookからGithubにpushしたらAzure Piplineでデプロイまで持っていく感じ
- 今回は簡単にするためAutoMLに一部置き換えて実現する
感想
- AzureのUIはAWS触った事あればさほど苦労しなさそう
- AWSで言えば何なのか?っていう変換部分は覚えなきゃいけないけど
- Azure AutoMLはDataRobotに似ている
- DevOpsツール初めて触った
最後に
あまり肯定的な感想がないけども、実際、これまでデータを軽視、ないしは十分に活用出来ていなかった企業にとってはAutoMLは重要な選択肢になるとは思う。 ただ、なんの経験も、ましたや素養すらもない人間たちが利用すると手に負えないはず。 モデルを一から作れるようなスペシャリストまでは必要ないものの、モデルを本番運用する上では基礎的な統計知識ぐらいは当たり前に持ってるような人は人材として抱えていかないといけないなと改めて感じた。
Spark Meetup Tokyo #1 (Spark+AI Summit 2019)を聴講した話
Spark + AI Summitって?
米国Databricks社が主催するApache Sparkに関する世界有数のカンファレンス。 アメリカではSan Francisco市のMoscone West Convention Center(東京ドーム0.7個分くらい)を会場としている。 今年は5,000人以上世界から参加していて年々参加者が増えている。ちなみに、昨年は4,000人クラスだった。 APACからの参加者も増えていて120名近く今年は参加していて、内20名は日本からの参加者だそう。
いわゆるビッグデータ技術に関するカンファレンスだったけども、近年話題の機械学習との親和性もあって昨年から名前にAIを関するようになった。 元々、Apache SparkにはMLlibがあるので、急に機械学習が使えるようになったとかそういう話ではない。
Spark Meetup Tokyo
Connpassのイベントページからの抜粋。
Spark+AI Summit 2019で発表があったSparkの最新開発状況,ユーザからのユースケース報告, 関連OSSであるKoalas/MLflow/Delta Lakeなどに関する情報をお伝えします.
会場はコワーキングスペース的な雰囲気を醸し出していた。おしゃれ。 この一角だけそういう雰囲気なので浮いていないかというと嘘になる(最上階だしね)。 東京タワーも見えたらよりおしゃれ度が上がったろうに。田町駅に向かって帰ると綺麗に見えるからまぁいいか。
雑感
- 元が40分とかのセッションをサマって話してもらっている
- ここで語られた内容が全てという話ではないので注意
- 公開期間は定かではないが発表の様子はビデオで公開されているので全て知りたい人はそれも合わせて確認した方がいい
- 英語苦手な自分としては自分が理解することができた内容を改めて日本語で確認できるいい機会だった
- 以下のような人にはオススメな会だった
- Delta LakeはApache SparkでACID特性を持たせられるので発展しそう
- Pandasの知識をそのまま活かしつつSpark環境で大容量データを高速に分析できるのはアプローチとして良いと思った
- Koalas開発側はPandasを常に追いかけねばならず、しんどそうだなとも思った
- 現在、DataFrameやSeriesは30%ほど取り込めており、週次でリリースしているみたいなので取りあえずみんな試してみれば良いと思う
- MLflowもそうだけど、Databricksって先に広まったもののより良くするフォロワーなイメージ
最後に
APACでは三番目のDatabricksのオフィスが日本に出来たので、日本でのこれからどう広まってくかは注目。 日本はまだまだデータの活用が進んでいないので、商機はあるのかもしれない。 製品を売るのもそうだけどOracle DBのように資格ビジネス的な感じでロックインしたエンジニア(サイエンティスト)を増やすのが良いかもしれない。
MacOS(Mojave)でDatabricks koalasを利用しようとしてつまづいた
前提
What's "Koalas"?
- SparkのDataFrameの為にPandasライクなAPIを用意したのがKoalas
- 米国Databricks社が開発してOSSとして公開した、Python用のフレームワーク
- 米国Databricks社はApache Sparkを使った製品を開発・提供している(Sparkへのコミットもしている)
- SparkではPySparkと呼ばれるPythonからSparkを扱うためのツールが用意されている(Spark自体はJVM言語のScalaで開発されている)
- PySparkでDataFrameを用いる時はSparkが用意するものを使うのが高速
- 一方、PythonではDataFrameを扱うときは一般的にPandasを用いる
- PandasのDataFrameの書き方とSparkのDataFrameの書き方は異なり学習コストがかかる
つまづきポイント
Python 3.7.xでのpyarrowのバグを踏んだ
Github(https://github.com/databricks/koalas)のGet Startedに書いてるやんけ。 と言うことで、あらかじめ導入していたpyenvとvirtualenvを使って3.6.8の仮想環境を用意しよう。
If this fails to install the pyarrow dependency, you may want to try installing with Python 3.6.x, as pip install arrow does not work out of the box for 3.7 https://github.com/apache/arrow/issues/1125.
pyenvで3.6.xをインストールしようとするとCのヘッダーファイルがなかった
3.7.2入れた時にもハマりましたが、Xcodeをアップデートした時にまた元に戻った・・・のかな? http://kane-please.hatenablog.com/entry/2018/11/07/001823
cmakeの他にCythonやOpen JDKもいるやんけ
Dependencesに書いてないやん。当たり前なのか?
でも結局
In [1]: import databricks.koalas as ks In [2]: df = ks.DataFrame({'x':range(3), 'y':['a','b','b'], 'z':['a','b','b']}) WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by org.apache.spark.unsafe.Platform (file:/Users/tkm/.pyenv/versions/3.6.8/envs/mySpark/lib/python3.6/site-packages/pyspark/jars/spark-unsafe_2.12-2.4.2.jar) to method java.nio.Bits.unaligned() WARNING: Please consider reporting this to the maintainers of org.apache.spark.unsafe.Platform WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations WARNING: All illegal access operations will be denied in a future release 19/04/26 06:52:11 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties Setting default log level to "WARN". To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
Docker でCentOS用意しよ…。
Raspberry Pi Type-Bに,とりあえずArch Linux入れました.
2,3週間ぐらい前にRaspberry Pi買ったんですが,奇跡的に自宅にSDカードを使うことのできる端末がなく,放置してました.
USBメモリでどうにかできないかと試行錯誤してたけど,もう諦めてリーダー買ってきました.
手順をざっくりと書くと以下の通りです.
Raspberry Piの公式ページからArchLinuxのimgファイルをダウンロードする
→SDカードをコンピュータに接続する
→diskutilやdf,mountコマンドでディスク識別子を調べる
→diskutil umount [ディスク識別子]でアンマウントする
→sudo dd if=[imgファイルのパス] of=/dev/rdisk[ディスク識別子にあった番号]
(例:disk2s1ならrdisk2)
→しばし待つと終了メッセージが現れる.
→再マウントされているので,/Volume内のSDカードのでディレクトリに入って正しく書き込まれていることを確認してdiskutil ejectする.
→Raspberry PiにSDカードを挿し,電源ON.表面のLEDの内,PWR以下の三つが光ってれば無事に読み込まれている.
細かいことはぐぐって調べてください.
Windows8でBUFFALO BSHSBD04を利用できるようにする方法
FILCO Majestouch MINILA Air JP 68key 茶軸(FFBT68M/NB)を買いました.
Bluetoothのコンパクトなキーボードが欲しかったのです.
冬のボーナスも出たことなので遠慮なく買ってきた訳です.
自分の持ってるデスクトップでも利用できるようにとBurtoothアダプタを買ってきた訳ですが,なんと公式のドライバがWindows8に非対応だというのです.
ワイヤレス生活を満喫するつもりMAXだったのに・・・.
心底がっかりしながらも,藁にもすがる思いでGoogle先生に縋り付きました.
すると.価格.comの口コミにベストアンサーがありました.
その方法というのが,「東芝製ユーティリティソフトを入れることで解決できる」とのこと.
http://www.princeton.co.jp/download/ptm-ubt3s/top.html
ページ中央にあるダウンロードボタンをクリックすると,「v70005.zip」というファイルがダウンロードされる.解凍して「setup.exe」を叩けば終わり.
再起動して「新しい接続の追加」を実行すれば,あとは画面に現れる手順に従えば接続できる.
安物買いの銭失いになるところだった.
リカレントネットワークによる記憶画像の想起 [追記]
ネックであった重み計算でのループ回数の削減を試みました.今までは記憶させるパターンのN次元ベクトルをp個生成するという形でした.今回のは記憶させるパターンのi番目の画素を要素としたp次元ベクトルをN個生成します.こうすることで内積一発で重みが計算できるので1000個記憶させても2個記憶させたときと同じくらいの速度で重みが計算されます.たぶん,これ以上は内積を利用した高速化は無理だと思います.
#直交する記憶パターンの生成 for i in xrange(self.__size): tmpNDArray = np.zeros(self.__patternNum) tmpNDArray[0] = self.__lena[i] for k in xrange(1, self.__patternNum): tmpNDArray[k] = (1.0 if(rnd.random() > 0.5) else -1.0) self.__pattern.append(tmpNDArray) self.__weight = np.zeros((self.__size, self.__size)) for i in xrange(self.__size): for j in xrange(i, self.__size): if i != j : self.__weight[i][j] = np.dot(self.__pattern[i], (self.__pattern[j]).T) / self.__size self.__weight[j][i] = self.__weight[i][j]
こんな感じで該当部分を書き換えると動くと思います.なんでこんな簡単なことを見落としていたのだろう・・・愚かですね.