FPGA Cloud で、2匹目の泥鰌は狙えるのか?

FPGA Cloud で、2匹目の泥鰌は狙えるのか?

なぜか、Intel AlteraとXilinxの開発者向けイベントに出たので、内容はとりあえず置いといて感想だけ書いておきます。 どっちが、何を、どうした的な話は書かないので、すみません。 両方の話から、こんな風にしようとしてるのかなぁという、感想を書きます。

インテル® FPGA テクノロジー・デイ
ザイリンクス開発者フォーラム 2017

私の知識

FPGA の技術的なことは、ほとんどわかりません。X86 サーバのインフラ周りとか、GPUFPGAの基本的な存在意義みたいなのは知っていると思いますが。ただ、そういう立場の人間にも、声がかかったりすること自体、結構、面白いなぁと思っていってきました。なので、ガチな開発者の方とは全く違った感想になってると思います。

Cloudのお話

Amazon EC2 F1 インスタンス がローンチされてます。で、ここで、FPGAのIPをマーケットプレイスで売れるということになってます。

これって、FPGAの世界で初めてと言っていい出来事なんだそうです。なんか、どんどん作ってガンガン売って金稼ごうゼェーー! みたいな、講演を聞いて、何とかビジネスセミナー見たいだと思ってしまったのは事実だけど。。

いずれにしろ、Cloud での開発と同時にIPを簡単に配布して、しかも課金できる仕掛けができたっていうのが、大きな出来事ってことみたいです。そうなると、既存の開発者の人たちに働きかけると共に、いかに、開発者を増やすかがマーケットの勝負になるんでしょうね。

ということで、C/C++ などの言語から、FPGAの回路設計に落とし込めるよってツール(高位合成)が重要になってくるのかな。無償化やOSSで自由に使えるという部分を増やして、面を広げようという気持ちを感じました。

Deep Learning

じゃぁ、何のIPがいいのかって話になると、やっぱり、Deep Learning を狙っているようです。さっきの、ばらまく系も、CUDAを参考にして、やってるような気がしましたねぇ。

確かに、GPUだけでは、解決できないということで、TPUやFPGAで、推論の部分を行うクラウド事業者の情報が出てますから、ここを狙うっていうのは、正しいと思います。

しかし、これ、二匹目の泥鰌狙いだと思うんだよなぁ。そもそも、DNNでお金が稼げるキラーアプリみたいなのがない状況なので、将来的な展望はよくわからないと思ってるんです、個人的には。。。

ただ、GPU一辺倒っていうのは、健全ではないと思うので、広がると面白いなぁとも思ってます。

DNNのモデルは各社から提供される流れ

今のところ、DNNのモデルは各社から提供されるみたいです。それを使って、TFとかCafeとかから使えるようにするみたいでした。とはいえ、使い勝手はどの程度良いのかは、私には、わかりませんが。

でも、モデルを自分で作成したければ、できるわけだし、とはいえそういうことをする会社はそんなに多くはない気もするし。。

どーなんすかね。。

色々、試せることが増えるのは良い

閑話休題FPGAを、色々な言語で試せるようになるのは、いいことだと思うので、じゃんじゃん、やってほしい。 開発者の選択肢が増えるのは、嬉しいことだと思う。

ただ、これって、結局のところ、X86で起きた手法の繰り返しを狙ってるのかなぁとも思う。制約が多い時には、最適化とか効率良いソフトの設計と実装ができないとだめで、開発者でもできる人は限られるので、量的には増えないんだけど。簡単にかける方向で開発者を増やしていってアプリを量産できるようになると、富豪的なハードで解決するようになってきてしまい、チップやら何やらが儲かるようになる。

ま、それも正しいんだろうけれど。

はたして、FPGAで可能なのかはわからないです、私。

おまけ

お弁当の写真で、終わりにしたいと思います。

弁当
f:id:Guutara:20171011120411j:plain:w300

今半弁当
f:id:Guutara:20171017125226j:plain:w300
今半弁当
f:id:Guutara:20171017125157j:plain:w300

Oracle JDK SE のライセンス等変更 のメモ(2017-10)

Oracle JDK SE のライセンス等変更 のメモ(2017-10)

個人的に確認したものです。保証はできないので、正確な情報が欲しい方は各自ベンダに問い合わせてください。

オラクルのサイト

Oracle Java SEサポート・ロードマップ

利用用途の変更

  • OpenJDKは、OracleJDKと同等の機能をもつバイナリの提供を開始する。 1

  • 無償での利用は(JRE,JDK) OpenJDK を利用することになる。

  • OracleJDK は、他のOracle製品と同様(Oracle Technology Network)に評価利用は可能だが、従来のような無償利用の対象ではなくなる。利用するには、有償サポートの購入が必要。

リリースサイクルの変更

  • 毎年、3月と9月にリリース。

  • リリースは、新機能の追加とは関係なしに定期的なリリースとなる。

  • 新機能2は完成したタイミングでリリースに組み込まれる。

  • OracleJDKの有償サポートは従来と同じライセンス契約の購入となる。Java SE Advancedを購入するか、WebLogic等のOracle製品のJava実行環境のサポートを購入することで可能となる。

  • OracleJDKは、下記の3年サポート対象のリリースをのぞき、新しいリリースが行われると、古いリリースのものはサポートされない。

  • OracleJDK のサポートは、半年のリリース単位と合わせて3年間の長期のリリース対象が提供される。いわゆるLTSライセンス。

リリース名称の変更

  • 年号と月を組み合わせたバージョン番号となる。

  • 最初のリリースは、JDK 18.3の予定。(2018年3月)

  • JDK 18.9 が、LTS(3年長期サポート)の最初のリリースの予定。以降、3年に一度、LTSの対象となる。


  1. 同じバイナリかどうかは未確認だが、違うものであると思われます。

  2. 例:ラムダ式の実装、ProjectJigsaw

Github での今の自分のやり方の覚書

clone して、issueでbranch

$ git clone https://github.com/guutara/hogehoge.git
$ cd hogehoge
$ git config --global user.email xxx@xxxx.xx
$ git config --global user.name "USERNAME"
$ git branch
* master
$ git branch issuXX
$ git branch
  issuXX
* master
$ git checkout issuXX
Switched to branch 'issuXX'
$ git branch
* issuXX
  master
$ git push origin issuXX
$ git pull origin issuXX

修正作業

$ git add FILE
$ git commit -a -m "MESSAGES"
$ git push origin issuXX

issue 番号を紐付けておく 1

番号は、Issuesの標題の最後にある、#N

$ git commit --allow-empty -m "resolve #N"
$ git push origin issuXX

Pull request と marge

Githubの画面で行う。

marge 後

$ git branch
* issuXX
  master
$ git checkout master
Switched to branch 'master'
Your branch is up-to-date with 'origin/master'.
$ git pull
$ git branch -d issuXX

  1. 10-11 追記

あるいはプログラマ以外にプログラムを作る権利を

*1

何か意識高い結論を求めるなら、読んでも無駄でござるよ。。

「どうやったら、プログラムを組めるようになれるんですかね?」

この会話、同じくらいのプログラミングの経験値を共有していた場合は、話が其れなりにあう。

なぜなら、何も知らないところから「プログラムを組む」の状態になるところでどの程度のことができるのか、なんとなく擦りあうからだ。あるいは、擦りあってないなと感じることができるし、あわなければ、あわないなりに、話すことも可能。

その辺りが、いつも難しいなぁと思ってしまうことになる。

で、その会話を書くつもりはないんだけれど。。。

何かを人手をかけずにやろうとした場合の手段として、コンピュータのシステム化がある。で、コンピュータで何かをやらせようとすると、プログラムってやつをかけばいいということになる。

ほら、この時点でも、また、さっきのすり合わせの問題が起きて来てしまってるのだけれど。。

プログラマー、という職種の人に頼まなくても、自分たちでどんどん作れば「改善できる」し、結局のところ利用するのも、やってほしいことが分かっているのも、こちらなんだから、プログラムってやつを覚えてかけばいいんだ。

プログラムを、プログラマー職から、我らの手に!

ってスローガンがあったかどうかは記憶にないけど、似たような話は過去聞いた気はしなくはない。。。

今は、コンピュータの環境としては、クラウドがある。あと、プログラムと呼ぶと怒られるんだろうけど、機械学習用のhhhhh AIようの TensorFlow なんかもある。学習の機会もたくさんあるし、昔とは違いやる気と時間があればできるようになっている、と。

確かに、プログラマー職ではなくても、こんなにすごいことができましたっていう情報はたくさん見るようになった気がする。それは凄いなぁと思う。

でも、それって、情報が昔よりも広まりやすくなって、もともとできる人に届きやすくなり、できたことが知りやすくなっただけの気もしないではない。

プログラムが動くには燃料が必要だ

ってことは、今も変わってはいない。クラウドは、たくさんの燃料を使って動いている。その上で動かすプログラムは、それを消費して動いている。どんなに、クラウドがすごくても、提供できる限界はある。今のところ、限界まで使い切ってしまったって話は、具体的には知らない。ま、要するに、たくさんの無駄^h^h余裕があるということだろう。

で、使用するにはお金がかかる。まぁ、クラウドの資源に余裕があるとすれば、あとは、利用者のお金と時間の余裕が限界というわけだ。

使ったら使っただけ課金されるのが標準的な決済の方法なので、同じ結果を得られるのなら、なるべく使わない方が資金の限界を有効に使える。あとは、プログラマー職に頼んだ場合と、自分で作った場合の費用対効果と機会損失で測れば良いだろう。

この辺、やったことがないので、エビデンスを持っていない。誰か、やってみてくれないだろうか。。

下手なプログラムを書くことに関しては、自信のある自分的には、どーも、専門ではなく二足のわらじ的に行うのであれば、あまり、広範囲には有用ではない気はするんだけど。まぁ、経済的な指標なのでなんとも。。

「どうやったら、資源を無駄に食いつぶさないプログラムを組めるようになれるんですかね?」

っていう、最初の会話と同じような話になってしまう。 しかも、これ、きっと終わりないんだろうなぁ。。

ところがオンプレミスだと課金がない

さて、これが一番の問題で、これを解決できる方法は、今んところ聞いたことがない。自社で設備を持ち、自社でメンテナンス要員を社員と外部の会社で賄っている場合だ。

いわゆる、資源の提供者が「プログラム職」とほぼ同等で、解放をのぞむ方は、ただ利用するだけのケースがほとんどではないかなぁ。

この場合、資源の余裕は、当然あるとしても、クラウドの比ではないし、そもそも、そんなに無駄遣いできない。

ただ、有効に使えるのであれば、毎年の現金のやりくりをしなくて良いので(設備は過去に買ってあるものを利用するから)資金の継続的な余裕は担保できる、はず。

しかし、設備のハードの増強やプログラムを動かす為のソフトウエアの改修などのヒトモノカネは、ただ、利用者の利用状況が逼迫してますから、ってだけでホイホイ決済おりないだろうし、おりたとしても、特にヒトは簡単には手に入らない。

なので、有効性がわからないなら、なるべく利用させたくないということになり、ますます、解放せよ! という不満も膨らみ続ける。

データの民主化って奴も同じ問題を抱えてるきがするのよね

ほんこれ。。

*1:趣味嗜好でプログラム書くのは対象外なので悪しからず

Github での今のやり方の覚書 (Clone しないで作業)

Clone しないで作業

あらかじめ、Local にリモートのリポジトリと同名のディレクトリを作成しておく。
そこには、すでに、hello.goが作成済み。

すでに、

$ git config --global user.email xxx@xxxx.xx
$ git config --global user.name "USERNAME"

はやってある。

$ mkdir gohello
$ cd gohello
$ git init

Githubで、リポジトリを作成。URLをコピーする。

$ git remote add origin  https://github.com/guutara/gohello.git

$ git fetch origin master
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
From https://github.com/guutara/gohello
 * branch            master     -> FETCH_HEAD
 * [new branch]      master     -> origin/master

$ git pull origin master
From https://github.com/guutara/gohello
 * branch            master     -> FETCH_HEAD

$ git branch
* master

$ git add hello.go

$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    new file:   hello.go

$ git commit -a -m "First commit"
[master c62e771] First commit
 1 file changed, 7 insertions(+)
 create mode 100644 hello.go

$ git push -u origin master
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 350 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://github.com/guutara/gohello.git
   a72be4a..c62e771  master -> master
Branch master set up to track remote branch master from origin.

2かいめ以降の修正

hello.go 修正後。

$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    modified:   hello.go

  no changes added to commit (use "git add" and/or "git commit -a")

$ git commit -a -m "add line "
[master 934a631] add line
 1 file changed, 2 insertions(+), 1 deletion(-)

$ git push origin master
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 350 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://github.com/guutara/gohello.git
  c62e771..934a631  master -> master

Data Scientist は、AIでメシを喰うのか?

最近、分析系製品で有名な会社の人と四方山話した。その時に、聴いた話を少し書いておこうと思う。

分析の会社ではマーケット的に…

まぁ、言うまでもないと思うのだけど、分析系の会社と言ってもマーケットから最近では、見向きもされないらしい。
ちょっと前は、統計学とか言ってたはずなんだが、今は、Machine Learning でもダメで、AIをつけないと食いつかないそうだ。

で、有名な、R言語ではない、商用の言語をもってる会社もめでたくAIを名乗ることになったみたい。

そして、必然というか、DNNを扱えるようになるだけではなく、Python で、コードが書けるようになっている。

“Analytics, Data Science, and Machine Learning” で、R が、Python に抜かれたという記事が、"kdnugget"あるのだけれど。

Python overtakes R, becomes the leader in Data Science, Machine Learning platforms

Python, R, Other Analytics, Data Science platform, 2016-2017

それを裏付けるような話ではある。

とはいえ人材は統計学で..

当然ながら、今まで揃えてきた人材は、統計学である。まぁ、機械学習に近いところまでは言っているとしても、基本的には統計学のモデルだし、言語な訳だ。

そこへ突然、AIでDNNなんだから、TensorFlowやPythonでしょうと言われたところで、対応できるわけもなく。。

しかし、当然、新規採用はそちらへフラれるわけで、特に新卒は極端にいえば、Rなんて知りません、TemsorFlowやPythonなら得意です。という人材になるわけだ。

これって結局、統計で解決しようと思うユーザ側の求めるものが変わってしまった、金を出す名目が変わってしまっただけで、別に統計やR言語より、DNNやPythonが優れているという話ではない。

でも、こんなに簡単に、変わってしまう業界なのだということは、結構、びっくりではある。

結局問題は…

解決すべき問題はなんなの、それを解決できたかどうかの検証は、どうやるの? というのは置いといたとして。。。

いやぁ、でもね、結局のところ、一番大変なことは、変わっていないのだそうだ。

データの前処理と後処理と検証。

これは、結局のところ変わらない。しかも、そこに関しては、どの先行企業も、情報を出してはいない。まぁ、出せないのかも知れないけどね。

この先なんだけど。。

統計学のまともな人々のエコシステムが壊されて行かないことを祈る。

あと、AIってこんなんだっけはさておき、DNN とTensorFlowとPythonで、末長く食べられるといいですね!!

まぁ、後者の新卒者の人々が統計学もちゃんと大学で学んでいれば話は変わる気はするのだけれど。。

余談

なんでも、この会社の社員の分析者が自社の利益の推移を景気動向と一致していることを見つけたらしい。 本当がどうかは検証してはいないのだけれど。 だとすると、なんだかねぇ。。