眠気.jl

投稿=不定期

Juliaで話題のGen/チュートリアルの環境構築

Genとは

A general-purpose probabilistic programming system with programmable inference.
DLに限らないgeneral-purposeな確率的プログラミングを目指しているのでGenという名前(リンク先参照)
The name 'Gen' comes from the system's purpose to fill a gap in "general-purpose" probabilistic programming, according a paper by MIT researchers. probcomp.github.io GenTF
TensorFlow plugin for the Gen probabilistic programming system
GenViz
可視化のためのなにか

触ってみる

公式のGetting Startedでは2通りのやり方が書いてある
1 . Juliaのpackage managerから入れる

pkg> add https://github.com/probcomp/Gen

2 . Dockerを使う

Dockerでやってみる

The easiest way to run the notebooks is using Docker.
らしいのでDockerの方のチュートリをやってみる

$ git clone https://github.com/probcomp/gen-quickstart.git
$ cd gen-quickstart
$ docker build -t gen:v0 .
$ docker run -it --name gen -p 8080:8080 -p 8090:8090 -p 8091:8091 -p 8092:8092 gen:v0

デカいので時間かかった(1.95GB)

f:id:julialangisthebestlang:20190701195453p:plain
docker_size

localhost:8080にアクセス

f:id:julialangisthebestlang:20190701200611p:plain
Gen

環境構築できた

チュートリアルの中身を見てみる

全体 Gen Quick Start.ipynb

f:id:julialangisthebestlang:20190701203442p:plain
tutorial

例えば tutorials/Reasoning About Regenerate.ipynb

Genの使い方,特にget_choicesで取りうる値がtreeコマンドの様に見れるのが印象的だったので載せておく

f:id:julialangisthebestlang:20190701210847p:plain
measurable_func
f:id:julialangisthebestlang:20190701210850p:plain
tree_view

参考

Gen公式

Q#のインストールとJupyterカーネルへの追加(Ubuntu 18.04)

動機

現在の流行は機械学習だと思っていて,待を歩くと殆どの人がAndrewNgの機械学習講座をやっていて, PRML, Convex Optimization, MurphyのML本, GoodfellowのDL本, 渡辺ベイズ, 園田D論, MLPシリーズ, ハムかず本, (敬称略)etc...等を読んでいるような印象がありますが
逆張りをしていきたいので,まだ流行していなそうなQuantum Computingやっていきたいなと思いました

最近Brilliant(米国の学習サイト,Courseraっぽい)でMicrosoftとAlphabetが協力した講座brilliant.orgのQuantum-Computingが出たのでそれをやっていきます

Quantum Computingブームが来たとき,いずれはこの講義もスタンダードになるんじゃないかと個人的には思います(まだ途中までしかやってませんが)
章ごとにQuizがあって、その後詳解や参照が表示される形式です
Courseraとの違いは無期限で回数無制限でテストを受け直せるところです

この講座だとおそらくQ#を手元にインストールする必要はないのですが(GUIで擬似プログラミングできる機能が用意されてしまっているので),追試してみたいので入れてみました

やってみる

Q#の公式を見ると,まずは .NET Core SDK (2.1 or later)を入れろということなので入れます https://dotnet.microsoft.com/learn/dotnet/hello-world-tutorial/install このページの選択でUbuntu18.04を選んでそのままコード打っていく
Register Microsoft key and feed

wget -q https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb

Install the .NET SDK

sudo add-apt-repository universe
sudo apt-get install apt-transport-https
sudo apt-get update
sudo apt-get install dotnet-sdk-2.2

これでdotnetのインストールはできたので
再びQ#の公式を見て

dotnet tool install -g Microsoft.Quantum.IQSharp

インストール完了,アプデは次のコマンドらしい

dotnet tool update -g Microsoft.Quantum.IQSharp

インストール済みでも再インストールされるらしい,次のメッセが出る

dotnet tool update -g Microsoft.Quantum.IQSharp
ツール 'microsoft.quantum.iqsharp' が安定した最新バージョン (バージョン '0.7.1905.3109') で再インストールされました。

jupyterカーネルに追加

公式だと

dotnet iqsharp install

とあるが,iqsharpが見つからないとエラーが出た
公式チュートリアルのDockerfileから見つけた次のコマンドで追加できた

dotnet iqsharp install --user --path-to-tool="$(which dotnet-iqsharp)"

Q#の動作確認

MSのQuantumの公式レポをクローンして遊びます

git clone git@github.com:microsoft/Quantum.git
cd /Quantum/Samples/src/Teleportation
dotnet build
ビルドに成功しました。                                                                                │
    0 個の警告                                                                                        │
    0 エラー                                                                                          │
                                                                                                      │
経過時間 00:00:22.75

build終わったことを確認して

dotnet run

警告なく終了!

Q#の特徴

Q#公式 によると,C#っぽく;,{}を使っていてifC#っぽいとのこと
独特なのはデフォルトだと値がimmutableで,letでmutableに

参考

.NET turorial

SciPyJapan2019振り返り(2/2)

動画公開されました!

www.youtube.com

なので,あんまり書くことないです...
動画見たほうが絶対良いです... 順番に並べて置きましたので,どうぞ

初日のビデオ

Tensorflow, Josh Gordon, Google

youtu.be

Advanced Numpy, Juan Nunuz-Iglesias, Monash University

youtu.be

Keynote: f(x) = a + bi Your (x) Future, f, Depends on Atoms (Real) and Bits (Imaginary: Cyber) Mitsunobu Koshiba, President and CEO, JSR

youtu.be

Apache Arrow, Kouhei Sutou, ClearCode Inc.

youtu.be

Chainer: A Deep Learning Framework for Fast Research and Applications, Crissman Loomis, Preferred Networks

youtu.be

Scaling your Python interactive applications with Jupyter, Luciano Resende, IBM CODAIT/Jupyter Contributor

youtu.be

CuPy: A NumPy-Compatible Library for High Performance Computing with GPU, Masayuki Takagi, Preferred Networks

youtu.be

RAPIDS: GPU Accelerated Data Science, Akira Naruse, NVIDIA

youtu.be

2日目のビデオ

Intro to Visualization, Manabu Terada, PythonED

youtu.be

Advanced Machine Learning, Alexandre Chabot-Lerclerc, Enthought

youtu.be

Keynote: Eric Jones, CEO, Enthought

youtu.be

Next-Level Art: Becoming More Creative with AI, Max Franzel, Qosmo

youtu.be

Production ML Pipelines with TensorFlow, Robert Crowe, Google

youtu.be

Evolution of the Enthought Platform, Mark Dickinson, Enthought

youtu.be

Optuna: A Define-by-Run Hyperparameter Optimization Framework, Takuya Akiba, Shotaro Sano, Toshihiko Yanase, Takeru Ohta and Masanori Koyama, Preferred Networks

youtu.be

SEM Image Noise Reduction Shinji Kobayashi, TEL

youtu.be

daskperiment, Masaaki Horikoshi, Arise Analytics

youtu.be

Progression of Zero Programming Skilled Scientist to Python User, Takayuki Miki, Tokyo Institute of Technology

youtu.be

Re-run, Repeat, Reproduce, Reuse, Replicate: Transforming Code into Scientific Contributions, Fabien Benureau, Okinawa IST

youtu.be

Let's Enjoy the Python World Using Network Analysis ~ Overlooking the reference relationship of PEPs with NetworkX, Tomoko Furuki

youtu.be

Reproducibility and Deployment of Scientific Code: A Discussion about the SciPy Stack and how edm Helps, Didrik Pinte, Enthought

youtu.be

感想等

1人で参加してたので,自明に端っこでガツガツぼっち飯をしていたのですが
OISTのFabienさんが話しかけてくださりシミュレーション辛いよねぇ〜,エンジニア的に良いコードとシミュレーションの目的に良いコード少し違うよねぇ〜的なお話をしました
楽しかったです

戦利品

オライリー社さんが配っていた「エレガントなSciPy」
じゃんけんで獲得した「かんたんPython

f:id:julialangisthebestlang:20190605000458j:plain
戦利品

terraform0.12.0へのアップデート(tfenv)

準備

tfenv(terraformのバージョン管理ツール)
を入れておく

brew install tfenv

tfenvの使い方

インストール済のバージョン一覧を見る

tfenv list
> 0.11.4

インストール可能なバージョン一覧を見る

tfenv list-remote
>
0.12.0                                                       
0.12.0-rc1                                                   
0.12.0-beta2                                                 
0.12.0-beta1                                                 
0.12.0                                                       
0.11.14                                                      
0.11.13

使うterraformのバージョンを切り替える

tfenv use [使いたいバージョン]

.terraform-versionのterraformをインストールする

tfenv install

tfenvでterraformアップデート

なので,次のようにしてterraformをアップデートする

tfenv install 0.12.0
tfenv use 0.12.0
tfenv list #確認
echo 0.12.0 > .terraform-version
#.terraform-versionに0.12.0と書き込む
#この階層でtfenv installすればバージョンが揃えられる(pipfile的な)

参考

github.com

Ubuntu18.04へのWolframEngine導入

やってみる

インストール

Free Wolfram Engine for Developers
に行ってLinux用をダウンロードする
Thank You for Downloading the Wolfram Engine
に画面遷移するので,アカウントが無ければGet your licenseをクリックしてダウンロード中に作る(氏名,メルアド,パスワードのみ)
あとは,

:~
$ cd Downloads
: ~/Downloads
$ sudo bash WolframEngine_12.0.0_LINUX.sh

インストールしたい場所, PATH通したい場所を聞かれる
それぞれデフォルトの/usr/local/Wolfram/WolframEngine/12.0, /usr/local/binで問題なければEnter連打で問題ない, 変えたい場合は聞かれたときに入力
インストールが完了すると下記の表示が出る

Installing WolframScript system integration...

Installation complete.
アカウント認証
wolframscript

で起動させる,初回起動のみアカウントを聞かれるのでメルアド(Wolfram ID)とPassを入力

: ~/Downloads
$ wolframscript
The Wolfram Engine requires one-time activation on this computer.

Visit https://wolfram.com/developer-license to get your free license.

Wolfram ID:
Password:

Wolfram Engine activated. See https://www.wolfram.com/wolframscript/ for more information.
Wolfram Language 12.0.0 Engine for Linux x86 (64-bit)
Copyright 1988-2019 Wolfram Research, Inc.

In[1]:= 1 + 1
Out[2]= 2

#Ctrl+Dで抜ける

: ~/Downloads
$

Jupyter notebookに追加したかった

WolframResearchのレポジトリを使う
今現在のJupyter kernel一覧をみてみる

: ~/Downloads
$ jupyter kernelspec list
   julia-1.1 [path]  
   python3

cloneして使わせていただく

: ~/Downloads
$ git clone git@github.com:WolframResearch/WolframLanguageForJupyter.git

: ~/Downloads
$ cd WolframLanguageForJupyter

:~/Downloads/WolframLanguageForJupyter
$ configure-jupyter.wls add
configure-jupyter.wls: Jupyter installation on Environment["PATH"] not found.

ipython addしたり色々したんですが無理でした, どなたか教えてください
追記(2019/05/27)
下記のコマンドでできました

configure-jupyter.wls add [jupyter-notebookのパス] [WolframKernelのパス]

SciPyJapan2019振り返り(1/2)

動機

最近こんな記事を見かけて、自分もSciPy Japan 2019を見に行ったので感想等書いてみたくなったので書いてみました gihyo.jp
公開されているチュートリアルのURLをすべて含んだ良い記事だと思うのでこんな記事読まずに↑こちらの記事読んだほうがいいかもしれないです
この記事で触れられてないところに触れていければと思います

参加費

学生:50$

知ったきっかけ

去年辺りからEnthoutのYoutubeチャンネルを見ていたのでSciPyの存在は知っていた
自分は特にUMAPとJupyternotebookでのシミュレーション環境構築の動画が好きだった www.youtube.com

進行スケジュール

進行は予定通りだった(4/23, 4/24共に) www.scipyjapan2019.scipy.org 初日は

9:00-12:30 チュートリアル

Tensorflow, Josh Gordon, Google
Advanced Numpy, Juan Nunuz-Iglesias, Monash University.
の2つから一つ選ぶ
自分はTensorflowを選びました
GoogleのJosh Gordon氏によると
1. TF2.0はさらにNumpyライクになった
2. Beginnerにとってはあまり大きな変化はない
3. Expertなcode styleはかっこよく書ける
リンク参照→https://storage.googleapis.com/applied-dl/SciPy_Tokyo.pdf
4. TF2.0の例はうまくいかないのもサイトにのっけちゃってる

12:30-1:30 昼食

ビュッフェ形式でした
会場がマンダリンオリエンタル東京だったので,すごい豪華なご飯でした
卑しい人間なので、この1食で元取ったなと思ってしまいました

1:45-2:30 Keynote: f(x)=a+bi

Your (x) future, f, depends on Atoms (real and bits (imaginary: cyber)
Mitsunobu Koshiba, President and CEO, JSR
AI使ってる企業事例の紹介等がありました

2:30-3:00 Apache Arrow, Kouhei Sutou, ClearCode Inc.

Apache Arrowの紹介

C,C++,C#,Go,Java,JavaScript, MATLAB, Python,R,Ruby,Rust,様々な言語で使える
インメモリーデータ向け多言語対応開発プラットフォーム
効率的なシリアライズができる
データを直接扱うことでコピーコスト, パースコストを失くしている

3:00-3:30 Chainer: A Deep Learning Framework for Fast Research and Applications, Crissman Loomis, Preferred Networks

NumPy/CuPy風のChainerX, Chainer CV, RLの紹介

3:30-3:45 休憩

すごい美味しいマカロンが出ました

3:45-4:15 Scaling your Python Interactive Applications with Jupyter, Luciano Resende, IBM

k8sでjupyter notebook立てまくって多言語対応
jupyter notebookでのデータフロー

4:15-4:45 CuPy: A NumPy-compatible Library for High Performance Computing with GPU,Masayuki Takagi, Preferred Networks

cuPyはSciPyの疎行列、FFT、特殊関数、線形代数等をサポートしてる

4:45-5:15 Rapids: GPU Accelerated Data Science, Akira Naruse, NVIDIA

一番衝撃的だった
特にcuDFがpandasライクだがかなり高速になっていた
RAPIDSについては下記のリンクが分かりやすかった
機械学習のすべてをGPUで行おうとしている壮大なプロジェクト

www.slideshare.net

qiita.com

5:15-6:00 ポスター発表及びジョブフェア

JSRさんとEnthoughtさんが展示をされてました
オライリージャパンさんがエレガントなSciPyを無償配布していたのでいただきました,しかも著者のJuan Nunez-Iglesiasがサインもしてくれました

6:00-7:30 レセプション

美味しい食ry

初日の振り返り

マンダリンオリエンタル東京が豪華過ぎて圧倒されました
セッションがこすぎて圧倒されました

juliaの設定.juliaをdotfilesに追加して管理したら便利だった

動機

Juliaのパッケージとかどこにあるんだろう、と思ったらhomeに.juliaがあったのでこれはdotfilesに足すしか無いと思った

やっていく

> cp .julia [dotfiles/homeの場所]

setup.shに追記

#!/bin/bash

DOT_FILES=(.bashrc .bash_profile .vim .vimrc .tmux.conf
.bash_logout .xonshrc .julia)

for file in ${DOT_FILES[@]}
do
  ln -s $HOME/dotfiles/home/$file $HOME/$file
done

.juliaの中身をちょっとみてみる

ls -a .julia
.       compiled  dev           packages
..      conda     environments  prefs
clones  config    logs          registries

それぞれのファイルには大体想像どおりのものがあった

今の所の便利さ

git pullすればstartup.jl反映される, packagesに一回入れたパッケージが残ってる

おまけ

.julia/repl_history.jl に,REPLで打ったコマンドが全て残ってます人によっては(少なくとも私にとっては)黒歴史なのでpublicなdotfilesに置くときは消去するといいかもしれません

https://www.mathwithjulia.com/