{%hackmd _6gkK4EVRrijGnUnS71_YA %}
Julia ってこんなことできます (仮)
===
<!-- .element: style="font-size: 300%" -->
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
2022/01/22 NGK2022S
antimon2(後藤 俊介)
Note:
っ
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
## お品書き
+ :small_blue_diamond: お前誰よ?
+ :small_blue_diamond: Julia とは?
+ :small_blue_diamond: Julia の 安定版とLTS
+ :small_blue_diamond: juliaup
+ :small_blue_diamond: Studio Lab + Julia
+ :small_blue_diamond: 機械学習 + julia
+ :small_blue_diamond: JuliaTokai
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
### 5分でしゃべれるのか??
<!-- .element: style="font-size:400%" -->
Note:
まぁかなり飛ばしていきます。
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
+ :arrow_right: お前誰よ?
+ :small_blue_diamond: Julia とは?
+ :small_blue_diamond: Julia の 安定版とLTS
+ :small_blue_diamond: juliaup
+ :small_blue_diamond: Studio Lab + Julia
+ :small_blue_diamond: 機械学習 + julia
+ :small_blue_diamond: JuliaTokai
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
# お前誰よ?
+ 名前:後藤 俊介
+ コミュニティ:**[NGK2022S](https://ngk2022s.connpass.com/)**, **[JuliaTokai](https://juliatokai.connpass.com/)**, **[機械学習名古屋](https://machine-learning.connpass.com/)**
+ 言語:**[Julia](https://julialang.org)**, Python, …
+ ![Twitter](https://i.imgur.com/HqouMIg.png)<!-- .element: class="plain" style="vertical-align:middle;background:transparent" --> [@antimon2](https://twitter.com/antimon2) / ![Facebook](https://i.imgur.com/01nPd37.png)<!-- .element: class="plain" style="vertical-align:middle;background:transparent" --> [antimon2](https://www.facebook.com/antimon2)
+ ![Github](https://i.imgur.com/yBKtii5.png)<!-- .element: class="plain" style="vertical-align:middle;background:transparent" --> [antimon2](https://github.com/antimon2/) / ![Qiita](https://i.imgur.com/FxHMi64.png)<!-- .element: class="plain" style="vertical-align:middle;background:transparent" --> [@antimon2](http://qiita.com/antimon2) / [<i class="fa fa-file-text"><!-- .element style="font-size:120%" --></i> @antimon2](https://hackmd.io/@antimon2)
Note:
今日も Julia の話っ
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
+ :white_check_mark: お前誰よ?
+ :arrow_right: Julia とは?
+ :small_blue_diamond: Julia の 安定版とLTS
+ :small_blue_diamond: juliaup
+ :small_blue_diamond: Studio Lab + Julia
+ :small_blue_diamond: 機械学習 + julia
+ :small_blue_diamond: JuliaTokai
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
## Julia とは 科学技術計算に強くて速い動的言語です。
<!-- .element: style="font-size:260%" -->
Note:
ですっ。
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
### You know everything about Julia?
<!-- .element: style="font-size:180%" -->
+ もう少しだけ詳しい概要↓<!-- .element: class="fragment" data-fragment-index="1" -->
Note:
これでみなさん完全に理解していただければ幸いなのですが、まぁそうも行かないかもしれないので、このスライドをここから下に辿ると少しだけ詳しい概要載せてありますので、このスライド公開したら後で見てみてください。
----
<!-- .slide: data-background-color="#ffffff" -->
[![Julia](https://raw.githubusercontent.com/JuliaLang/julia-logo-graphics/master/images/julia-logo-color.svg?sanitize=true)<!-- .element: style="background:white;width:80%" -->](https://julialang.org)
Note:
----
<!-- .slide: data-background-color="rgba(213,99,92,0.3)" -->
## Julia とは?(1)
+ [The Julia Language](https://julialang.org)
+ 最新 v1.7.1(2021/12/22)
+ LTS v1.6.5(2021/12/19)
+ Nightly v1.8.0-DEV
+ 科学技術計算に強い!
+ 動作が速い!(LLVM JIT コンパイル)
Note:
ググるときはなるべく [julialang](https://www.google.co.jp/search?q=julialang) で!
----
<!-- .slide: data-background-color="rgba(213,99,92,0.3)" -->
## Julia とは?(2)
> + Rのように中身がぐちゃぐちゃでなく、
> + Rubyのように遅くなく、
> + Lispのように原始的またはエレファントでなく、
> + Prologのように変態的なところはなく、
> + Javaのように硬すぎることはなく、
> + Haskellのように抽象的すぎない
>
> ほどよい言語である
<!-- .element: style="font-size:66%" -->
引用元:http://www.slideshare.net/Nikoriks/julia-28059489/8
<!-- .element: style="font-size:71%" -->
----
<!-- .slide: data-background-color="rgba(213,99,92,0.3)" -->
## Julia とは?(3)
> + C のように高速だけど、
Ruby のようなダイナミズムを併せ持っている
> + Lisp のようにプログラムと同等に扱えるマクロがありながら、
MATLAB のような直感的な数式表現もできる
> + Python のように総合的なプログラミングができて、
R のように統計処理も得意で、
Perl のように文字列処理もできて、
MATLAB のように線形代数もできて、
shell のように複数のプログラムを組み合わせることもできる
> + 超初心者にも習得は容易でありながら、
超上級者の満足にも応えられる
> + インタラクティブにも動作して、コンパイルもできる
<!-- .element: style="font-size:50%" -->
([Why We Created Julia](http://julialang.org/blog/2012/02/why-we-created-julia) から抜粋・私訳)
<!-- .element: style="font-size:71%" -->
Note:
いろんな言語の「いいとこどり」言語!ってことでっ
----
<!-- .slide: data-background-color="rgba(213,99,92,0.3)" -->
## 要するに
<!-- .element: style="font-size:300%" -->
+ 動的言語なのに速い!
+ 文法も覚えやすい!
+ 数値計算に強い!
<!-- .element: style="font-size:180%" -->
Note:
機械学習とかにも持って来いっ!
----
<!-- .slide: data-background-color="rgba(213,99,92,0.3)" -->
## 主な機能
<!-- .element: style="font-size:280%" -->
+ [多重ディスパッチ](https://docs.julialang.org/en/v1/manual/methods/)
+ [動的型システム](https://docs.julialang.org/en/v1/manual/types/)
+ [並行・並列処理](https://docs.julialang.org/en/v1/manual/parallel-computing/)、コルーチン
+ [組込パッケージマネージャ](https://docs.julialang.org/en/v1/stdlib/Pkg/)
<!-- .element: style="font-size:160%" -->
Note:
っ
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
+ :white_check_mark: お前誰よ?
+ :white_check_mark: Julia とは?
+ :arrow_right: Julia の 安定版とLTS
+ :small_blue_diamond: juliaup
+ :small_blue_diamond: Studio Lab + Julia
+ :small_blue_diamond: 機械学習 + julia
+ :small_blue_diamond: JuliaTokai
Note:
はい Juliaとは? 終わりw
続いて 安定版とLTS という話をします。
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
[![Download Julia](https://hackmd.io/_uploads/ryb6wEO3t.png)
https://julialang.org/downloads/](https://julialang.org/downloads/)
<!-- .element: style="font-size:60%" -->
Note:
これ公式のダウンロードサイトのキャプチャなんですけれど…
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
+ 最新安定版:v1.7.1(2021/12/22)
+ LTS:v1.6.5(2021/12/19)
<!-- .element: style="font-size:160%" -->
Note:
常に最新安定版(Current stable release)とLTS(Long-term support)の2つを公開していますっ
他にβリリースチャネルも存在することもありますっ
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
## 安定版
+ 機能追加・不具合修正(+パフォ改善)ごとにリリース!
+ バージョンアップによる「破壊的な仕様変更」なし!
+ キーワード:セマンティックバージョニング
Note:
安定版はまぁ安定版なんですが、ポイントはJuliaは文法がもうほぼ固まっていて、某他言語みたいに破壊的な仕様変更はないんですね、
ちなみにセマンティックバージョニングって言うんですけれど、その話してると5分じゃ全然足りないので省略しますが、…
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
## LTS
+ API仕様を保証する最低バージョン!
+ アプリ・パッケージ開発者は気にする必要あり
Note:
他にLTSチャネルというのがありまして、要するにAPI仕様を保証する最低バージョンということです。
みんなに使ってもらうパッケージを開発する場合は保証すべき最低バージョンとして動作確認する必要はありますが、
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
## 要するに
<!-- .element: style="font-size:300%" -->
+ 普段使いは常に最新安定版!
+ 仕様ベースはLTS!
<!-- .element: style="font-size:140%" -->
Note:
要するにこれだけ覚えておけばOKですっ:
普段使い・研究開発等なら常に最新安定版を使えばOK!
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
+ :white_check_mark: お前誰よ?
+ :white_check_mark: Julia とは?
+ :white_check_mark: Julia の 安定版とLTS
+ :arrow_right: juliaup
+ :small_blue_diamond: Studio Lab + Julia
+ :small_blue_diamond: 機械学習 + julia
+ :small_blue_diamond: JuliaTokai
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
[![Get Julia - Microsoft Store](https://hackmd.io/_uploads/HyH2T7O3K.png)
https://www.microsoft.com/store/apps/9NJNWW8PVKMN](https://www.microsoft.com/store/apps/9NJNWW8PVKMN)
<!-- .element: style="font-size:60%" -->
Note:
Windows をお使いの方はおなじみだと思うんですが…
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
+ Microsoft Store に Julia が登録されている!
+ Julia の最新安定版と `juliaup` コマンドがインストールされる!
<!-- .element: style="font-size:180%" -->
Note:
MSStore に Julia が登録されていますっ!
インストールすると、Julia の最新安定版と `juliaup` というコマンドがインストールされます!
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
[![JuliaLang/juliaup: An experimental Julia version manager](https://hackmd.io/_uploads/SkD7g4uhY.png)
https://github.com/JuliaLang/juliaup](https://github.com/JuliaLang/juliaup)
<!-- .element: style="font-size:60%" -->
Note:
`juliaup` は Github で開発管理されていまして…
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
[![Installation - README - Julialang/juliaup](https://hackmd.io/_uploads/SJoyb4dhF.png)
https://github.com/JuliaLang/juliaup/blob/master/README.md#installation](https://github.com/JuliaLang/juliaup/blob/master/README.md#installation)
<!-- .element: style="font-size:60%" -->
Note:
README にも記載されてます通り…
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
+ winget でインストールできる!
+ Mac/Linux にも対応!(experimental)
+ ArchLinux!
<!-- .element: style="font-size:180%" -->
Note:
Windows なら winget でコマンドラインからでもインストールできますっ!(まぁこれは MSStore 登録されていれば当たり前なんですけれど)
Mac/Linux にも対応していますっ!(そもそもRust製のコマンドラインアプリなのでビルドさえできればどこでもOKな訳です、まだexperimentalではありますが)
あと Arch Linux やっぱ攻めてますねシステムパッケージマネージャでもう対応してますっ!
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
## `juliaup` の利点
+ パス通してくれる! (Windowsだと便利)
+ コマンド一発で更新!
+ 安定版とLTSを気軽に切り替えられる!
<!-- .element: style="font-size:160%" -->
Note:
利点としては、まずWindows だとパスを通すのが公式バイナリだと微妙に面倒なのですが完全自動化してくれます。Mac/Linuxでも .bashrc 等を編集してくれるので半自動でできます。
あと他言語の `○○env` ライクにバージョンを気軽に切り替えできるので複数バージョンに対応したい時には便利です。
ただ…
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
## `juliaup` の欠点?
+ バージョンマネージャとしての需要低い!<!-- .element: style="font-size:200%" -->
+ Julia は最新安定版とLTSだけ押さえておけばOKなので<!-- .element: style="font-size:60%" -->
Note:
欠点としては、そもそもJuliaは「研究・開発目的なら常に最新安定版を押さえておけば良い」ので「バージョン切り替え」としての需要は低いということ。まぁ常に最新をインストールできる(古かったらnoticeくれる)のでその点は有用ですけれど。
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
+ :white_check_mark: お前誰よ?
+ :white_check_mark: Julia とは?
+ :white_check_mark: Julia の 安定版とLTS
+ :white_check_mark: juliaup
+ :arrow_right: Studio Lab + Julia
+ :small_blue_diamond: 機械学習 + julia
+ :small_blue_diamond: JuliaTokai
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
[![Amazon Sagemaker Stduio Lab アナウンス記事](https://hackmd.io/_uploads/SkOOcme6t.png)
https://aws.amazon.com/jp/blogs/news/now-in-preview-amazon-sagemaker-studio-lab-a-free-service-to-learn-and-experiment-with-ml](https://aws.amazon.com/jp/blogs/news/now-in-preview-amazon-sagemaker-studio-lab-a-free-service-to-learn-and-experiment-with-ml/)
<!-- .element: style="font-size:40%" -->
Note:
昨年末のリリース記事っ
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
## Amazon Sagemaker Stduio Lab とは
+ 誰でもAWSのリソース(CPU/GPU)を利用して色々実験できる素敵な環境♪
+ Jupyter Lab ベース
Note:
詳しいことはきっとAWS関係の人とかがLTしてくれるだろうので省略しますっ
で、公式に Julia カーネルをインストールする方法が提供されていてですね…
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
[![1-install-julia.ipynb](https://hackmd.io/_uploads/B1S6ZIxaK.png)](https://github.com/aws/studio-lab-examples/blob/main/custom-environments/julia/1-install-julia.ipynb)
参考:[https://github.com/aws/studio-lab-examples/blob/main/custom-environments/julia/1-install-julia.ipynb](https://github.com/aws/studio-lab-examples/blob/main/custom-environments/julia/1-install-julia.ipynb)
<!-- .element: style="font-size:40%" -->
Note:
これをこうして…
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
![FluxMNIT_GPU_Sample.ipynb](https://hackmd.io/_uploads/rk3Hz8lpY.png)
Note:
こんな感じで…
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
+ Studio Lab で Julia 動かせます!
+ GPU 使って機械学習(DeepLearning)できます!
<!-- .element: style="font-size:144%" -->
Note:
ただし連続稼働時間制限4hなので本当に実験程度ですけれど。
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
### Point
+ 公式に Julia 対応していること!
<!-- .element: style="font-size:240%" -->
Note:
AWS の中の人が「サンプル/カスタム環境」として提供しているので。
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
+ :white_check_mark: お前誰よ?
+ :white_check_mark: Julia とは?
+ :white_check_mark: Julia の 安定版とLTS
+ :white_check_mark: juliaup
+ :white_check_mark: Studio Lab + Julia
+ :arrow_right: 機械学習 + julia
+ :small_blue_diamond: JuliaTokai
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
![FluxMNIT_GPU_Sample.ipynb](https://hackmd.io/_uploads/H1m_IUlTF.png)
Note:
時間ないので簡単に、モデルをこんな感じで定義して…
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
![FluxMNIT_GPU_Sample.ipynb](https://hackmd.io/_uploads/BJIiI8xTK.png)
Note:
学習はこんな感じで…
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
## Flux.jl
+ [https://github.com/FluxML/Flux.jl](https://github.com/FluxML/Flux.jl)
+ Julia 定番の DeepLearning F/W
+ Pure Julia
+ 自動微分
+ Model Zoo も割と充実
+ (注意:≠Flax)
Note:
Julia の定番DeepLearningフレームワークです。ChainerとかよくあるF/Wと同じ感覚で使えます。
注意点として google Flax とは無関係です。
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
## 他
+ [Knet.jl](https://github.com/denizyuret/Knet.jl) (Y/A DLFW)
+ [MLJ](https://github.com/alan-turing-institute/MLJ.jl)(機械学習全般をカバー)
+ `β = X \ y` ←単純な線形回帰
Note:
Knet も Flux と同じくらい前からあるDeepLearningフレームワークです。
MLJ は機械学習全般をカバーするフレームワークで、SVMとかAdaBoostとかRandomForestとか、あとK-meansとか、教師あり/教師なし初め様々なモデルが用意されています。
簡単なものなら自分で書くのも簡単っ
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
[![State of machine learning in Julia - JuliaLang Discorse](https://hackmd.io/_uploads/SyJGJ0_6K.png)
https://discourse.julialang.org/t/state-of-machine-learning-in-julia/74385](https://discourse.julialang.org/t/state-of-machine-learning-in-julia/74385)
<!-- .element: style="font-size:40%" -->
Note:
あとつい最近ですけれど Discorse で「Julia の機械学習周りって今どんな感じ?」て質問があってですね、、、
Julia派/JAX・Pytorch派 それぞれ利点や問題点要望点出して議論されたりしています。
ということで…
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
## まとめ
+ けっこう充実してる!
+ 速い!(要:エビデ
+ 日々進歩している
<!-- .element: style="font-size:200%" -->
Note:
ということでまとめとしては、「けっこう充実している」「速い(っていっこも『速い』て話してないですね、速いです)」そして「議論も活発にされていてどんどん進歩している」ってことでっ
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
+ :white_check_mark: お前誰よ?
+ :white_check_mark: Julia とは?
+ :white_check_mark: Julia の 安定版とLTS
+ :white_check_mark: juliaup
+ :white_check_mark: Studio Lab + Julia
+ :white_check_mark: 機械学習 + julia
+ :arrow_right: JuliaTokai
Note:
というわけでそんな Julia についての勉強会ということで、、、
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
[![JuliaTokai](https://hackmd.io/_uploads/rJMpWfrpF.png)](https://juliatokai.connpass.com/)
Note:
っ
----
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
+ 次回:未定(2月に第12回やりたい)
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
+ :white_check_mark: お前誰よ?
+ :white_check_mark: Julia とは?
+ :white_check_mark: Julia の 安定版とLTS
+ :white_check_mark: juliaup
+ :white_check_mark: Studio Lab + Julia
+ :white_check_mark: 機械学習 + julia
+ :white_check_mark: JuliaTokai
Note:
いけたー
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
ご清聴ありがとうございます。
Note:
ご清聴ありがとうございますっ!
{"metaMigratedAt":"2023-06-16T17:37:28.805Z","metaMigratedFrom":"YAML","title":"Julia ってこんなことできます (仮)","breaks":true,"slideOptions":"{\"transition\":\"slide\",\"theme\":\"league\"}","contributors":"[{\"id\":\"80062a4b-8dad-49ac-95bf-848ce0686e9e\",\"add\":17216,\"del\":2255}]"}