{%hackmd _6gkK4EVRrijGnUnS71_YA %} Julia ってこんなことできます<span>[完全版]<!-- .element: style="white-space:nowrap" --></span> === <!-- .element: style="font-size: 300%" --> <!-- .slide: data-background-color="rgba(102,130,223,0.3)" --> 2022/03/13 JuliaTokai \#12 antimon2(後藤 俊介) Note: 2ヶ月前のNGK2022Sで発表した内容の完全版! --- <!-- .slide: data-background-color="rgba(102,130,223,0.3)" --> ### ※※注意事項※※ <!-- .element: style="font-size:120%" --> + このスライドは 2022/01/22 に開催された [NGK2022S](https://ngk2022s.connpass.com/event/233520/) というオンラインイベントで発表した **5分LT** を再構成してお送りするものです。 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)" --> + :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)" --> # お前誰よ? ---- <!-- .slide: data-background-color="rgba(102,130,223,0.3)" --> ## 自己紹介 + 名前:後藤 俊介 + 所属:**[有限会社 来栖川電算](https://www.kurusugawa.jp)** + コミュニティ:**:star2:[JuliaTokai](https://juliatokai.connpass.com/)**, :star2:[機械学習名古屋](https://machine-learning.connpass.com/), :star:[jl.dev](https://jldev.connpass.com/), [Python東海](https://connpass.com/series/292/), … + 言語:**[Julia](https://julialang.org)**, Python, Scala(勉強中), … + ![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(44,214,221,0.3)" --> [![有限会社来栖川電算](https://i.imgur.com/8Kuhfel.png) https://www.kurusugawa.jp](https://www.kurusugawa.jp) Note: 普段は Python で仕事してますっ --- <!-- .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="rgba(213,99,92,0.3)" --> [![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.2(2022/02/06) + LTS v1.6.5(2021/12/19) + Upcoming v1.8.0-β1(2022/02/23) + 科学技術計算に強い! + 動作が速い!(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(213,99,92,0.3)" --> ## 文法・関数 Note: 以降、ほぼ過去スライドからのコピペ。すっ飛ばして先へ進んで戴いてもOKっ ---- <!-- .slide: data-background-color="rgba(213,99,92,0.3)" --> ### 基本的な演算 ```julia julia> 1 + 2 - 3 * 4 # 四則演算(除算以外) -9 julia> 7 / 5 # `整数 / 整数` の結果は浮動小数 1.4 julia> 7 ÷ 5 # `整数 ÷ 整数` の結果は整数 1 julia> 2 ^ 10 # 冪乗は `^` 1024 julia> 123 & 234 | 345 # 論理積 / 論理和 376 julia> 123 ⊻ 234 # 排他的論理和(==`xor(123, 234)`) 145 ``` <!-- .element: style="font-size:46%" --> Note: 整数同士の除算は実数になりますっ 整数除算演算子 `÷` が別に存在します(Python の `//` 相当)っ また冪乗も(`**` ではなく)`^` ですっ `⊻` は `\xor`+<kbd>Tab</kbd> または `\veebar`+<kbd>Tab</kbd> で変換できますっ ちなみに先ほどの `÷` も `\div`+<kbd>Tab</kbd>で(基本的に ${\rm \TeX}$ の書式)っ ---- <!-- .slide: data-background-color="rgba(213,99,92,0.3)" --> ### 配列 ```julia julia> a = [1, 2, 3, 4, 5] 5-element Vector{Int64}: 1 2 3 4 5 julia> a[1] # Julia は 1-origin 1 julia> println(a[2:3]) # 範囲指定は両端含む [2, 3] ``` <!-- .element: style="font-size:50%" --> Note: 1-origin であることに注意すればあとは普通の配列っ あと `a:b` は範囲(`Range`)の記法。両端を含む(Ruby の `a..b` と同じ)っ ---- <!-- .slide: data-background-color="rgba(213,99,92,0.3)" --> ### 配列の内包表記 (1) ```julia julia> a = [n^2 for n=1:5] 5-element Vector{Int64}: 1 4 9 16 25 julia> A = [x+10y for y=1:3, x=1:3] 3×3 Matrix{Int64}: 11 12 13 21 22 23 31 32 33 ``` <!-- .element: style="font-size:50%" --> Note: 内包表記の記法は Python に類似っ かつ、`for` にカンマ区切りで複数のイテレータを渡すことで2次元以上の配列も作成可能っ ---- <!-- .slide: data-background-color="rgba(213,99,92,0.3)" --> ### 配列の内包表記 (2) ```julia julia> [(a,b,c) for c=1:15,b=1:15,a=1:15 if a^2+a*b+b^2==c^2] 6-element Vector{Tuple{Int64, Int64, Int64}}: (3, 5, 7) (5, 3, 7) (6, 10, 14) (7, 8, 13) (8, 7, 13) (10, 6, 14) ``` Note: Python と同様に `if` で条件を指定することも可能っ あと Python と同様、`[○ for ○=○]` を `(○ for ○=○)` と書くと配列ではなくて `Generator` が返りますっ ---- <!-- .slide: data-background-color="rgba(213,99,92,0.3)" --> ### 多次元配列(v1.7以降) ```julia julia> [1;2;;3;4;;;5;6;;7;8] # 2×2×2 の3次元配列 2×2×2 Array{Int64, 3}: [:, :, 1] = 1 3 2 4 [:, :, 2] = 5 7 6 8 julia> [1 2;3 4;;;5 6;7 8] # 従来記法との併用も可能(次元の順番に注意) 2×2×2 Array{Int64, 3}: [:, :, 1] = 1 2 3 4 [:, :, 2] = 5 6 7 8 julia> [1;;;;] # 1×1×1×1 の4次元配列 1×1×1×1 Array{Int64, 4}: [:, :, 1, 1] = 1 ``` <!-- .element: style="font-size:34%" --> Note: `;` の数で次元方向の区切ができるっ これだけでも v1.7 を使うべきと言える仕様拡張っ! ---- <!-- .slide: data-background-color="rgba(213,99,92,0.3)" --> ### ベクトル ```julia julia> x = [1., 2., 3.]; y = [3., 1., 2.]; julia> x + y # `x .+ y` と書いても同じ(elementwise operation) [4., 3., 5.] julia> x .* y # これは `x * y` と書くとNG [3., 2., 6.] julia> using LinearAlgebra julia> x ⋅ y # 内積(dot積、`dot(x, y)` と書いても同じ) 11.0 julia> x × y # 外積(cross積、`cross(x, y)` と書いても同じ) [1., 7., -5.] ``` <!-- .element: style="font-size:50%" --> Note: Julia では実は1次元配列がベクトルの扱いっ `⋅` は `\cdot`+<kbd>Tab</kbd>、`×` は `\times`+<kbd>Tab</kbd>(これらを利用するには `using LinearAlgebra` 必要)っ あとこれらや先ほどの `÷` や `⊻` などのように、ASCIIの範囲を超えたUnicode文字の演算子(そのほとんどが $\TeX$ 由来)が Julia にはたくさんあります(他には例えば比較演算子の `≤` `≥` や、集合の要素 `∈` や包含関係 `⊆` などなど) ---- <!-- .slide: data-background-color="rgba(213,99,92,0.3)" --> ### 行列 ```julia julia> A = [1 2; 3 4] # この記法は MATLAB/Octave 由来 2×2 Matrix{Int64}: 1 2 3 4 julia> A' # `○'` は転置行列(正確には随伴行列)の記法(これも MATLAB/Octave 由来) 2×2 adjoint(::Matrix{Int64}) with eltype Int64: 1 3 2 4 julia> A'ᵀ # ← ≥ v"1.6", v"1.5" までは `transpose(A)` # 正確には転置行列はこっち 2×2 transpose(::Matrix{Int64}) with eltype Int64: 1 3 2 4 ``` <!-- .element: style="font-size:50%" --> Note: Julia では2次元配列が行列の扱いっ v1.6 から転置を表す表記として `○'ᵀ` と書けるようになりましたっ `'\^T` + <kbd>TAB</kbd> で入力できますっ ---- <!-- .slide: data-background-color="rgba(213,99,92,0.3)" --> ### 行列の演算 ```julia julia> A = [1 2; 3 4]; B = [3 0; 0 6]; julia> A + B # A .+ B でも同様 2×2 Matrix{Int64}: 4 2 3 10 julia> A * B # matrix multiply 2×2 Matrix{Int64}: 3 12 9 24 julia> A .* B # elementwise multiply 2×2 Matrix{Int64}: 3 0 0 24 ``` <!-- .element: style="font-size:48%" --> Note: 行列は `*` で通常の行列積になりますっこれ便利っ ---- <!-- .slide: data-background-color="rgba(213,99,92,0.3)" --> ### ブロードキャスト ```julia julia> sin(0.1) 0.09983341664682815 julia> sin.([0.1, 0.2, 0.3, 0.4]) 4-element Vector{Float64}: 0.0998334 0.198669 0.29552 0.389418 julia> [0.1, 0.2, 0.3, 0.4] .^ 2 # => [0.01, 0.04, 0.09, 0.16] ``` <!-- .element: style="font-size:50%" --> Note: 関数名と `(` の間に `.` を置くと、普通の関数を配列に拡張してくれる(ブロードキャスト)っ `.^` のように演算子の前に `.` を書いても同様(先ほど出た `.+` `.*` もブロードキャスト)っ ---- <!-- .slide: data-background-color="rgba(213,99,92,0.3)" --> ### 関数定義 ```julia julia> f(x) = x^2 + 2x - 1 f (generic function with 1 method) julia> f(1) 2 julia> f.(1:5) # => [2, 7, 14, 23, 34] ``` Note: 数学のように直感的な記述で関数を定義可能っ `2x` は `2*x` の省略形、曖昧さがなければリテラルと他の識別子が続く場合などに勝手に乗算と解釈してくれるっ またユーザ定義関数も `.` をつけて自動的にブロードキャスト対応っ ---- <!-- .slide: data-background-color="rgba(213,99,92,0.3)" --> ### 有理数・複素数 ```julia julia> 1//2 == 0.5 true julia> 1//2 - 1//3 1//6 julia> 1im ^ 2 == -1 true julia> (1.0 + 0.5im) * (2.0 - 3.0im) 3.5 - 2.0im ``` Note: 有理数・複素数を標準サポート。 `//` は有理数除算(結果は有理数) `im` は虚数単位。 どちらも四則演算も普通に書けますっ --- <!-- .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/BkVW68P-c.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.2(2022/02/06) + 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/HyUgyvD-9.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/SyhTywDb5.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 でインストールできる! + `winget install julia -s msstore` + Mac/Linux にも対応!(experimental) + `curl -fsSL https://install.julialang.org | sh` + `brew install juliaup` + ArchLinux! <!-- .element: style="font-size:120%" --> 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)" --> ![私の環境](https://hackmd.io/_uploads/SJlEOPwZq.png) --- <!-- .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/SyAAZ-5-9.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)" --> ![FluxMNIST_GPU_Sample.ipynb](https://hackmd.io/_uploads/BJiELbqZ9.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)" --> ![FluxMNIST_GPU_Sample.ipynb](https://hackmd.io/_uploads/ByGsU-cZ9.png) Note: 時間ないので簡単に、モデルをこんな感じで定義して… --- <!-- .slide: data-background-color="rgba(102,130,223,0.3)" --> ![FluxMNIST_GPU_Sample.ipynb](https://hackmd.io/_uploads/HJo0Ubc-5.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/rkVPwW9Zq.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: って今さらここで紹介するものでもないですけれどw --- <!-- .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)" --> # 参考リンク ---- <!-- .slide: data-background-color="rgba(102,130,223,0.3)" --> ## 参考リンク + [The Julia Language](https://julialang.org) + [Julia Documentation](https://docs.julialang.org/en/v1/) + [JuliaLang/juliaup: An experimental Julia version manager](https://github.com/JuliaLang/juliaup) <!-- + [Iteration - Interfaces - Manual](https://docs.julialang.org/en/v1/manual/interfaces/#man-interface-iteration) + [Iteration - Collections and Data Structures - Base (API Referense)](https://docs.julialang.org/en/v1/base/collections/#lib-collections-iteration) --> --- <!-- .slide: data-background-color="rgba(102,130,223,0.3)" --> ご清聴ありがとうございます。 Note: ご清聴ありがとうございますっ!
{"metaMigratedAt":"2023-06-16T21:04:28.050Z","metaMigratedFrom":"YAML","title":"Julia ってこんなことできます[完全版]","breaks":true,"slideOptions":"{\"transition\":\"slide\",\"theme\":\"league\"}","contributors":"[{\"id\":\"80062a4b-8dad-49ac-95bf-848ce0686e9e\",\"add\":12893,\"del\":8749}]"}
    1012 views