たけのこブログ

凡人が頑張って背伸びするブログ

Juliaupを導入してjuliaをバージョンアップさせて、Jupyter labで開発するための備忘録

概要

なんだかんだで二年ぶりの投稿です。

二年間で私の人生も大きく変化してきましたが、直近の経歴はこんな感じです。

  • 2023年に某国立大学の博士課程を修了して、博士(工学)を持っています。
  • 博士課程在学中に開業してフリーランスとして研究と両立して活動していた経験があり、現在フリーランス4年目です。
  • 主に今まで東大スタートアップや大手企業、外資企業など複数の企業でデータサイエンティスト&機械学習エンジニアとして活動しており、推定億単位のレコメンドによる売上改善や特許開発の発明者としての実績があります。最近は機械学習プロジェクトの技術顧問などもしてます。
  • 博士課程在学中に平均月収100万円を達成しています(こちらについては近いうちにブログとして投稿する予定です)。
  • 丁度2023年9月末でインターンを含め四年以上した企業(正社員)を退職して、今はフリーランスをしながら大学での共同研究を進めています。

かなり前ですが、開業したての情報はこちらに説明があるので、よかったら参考にしてください。

yukr.hatenablog.com

一年近く民間企業の仕事に時間を取られて放置気味だった研究を再開するために、数値計算で使っていたJuliaの環境構築を改めて見直すことになりました。今まではJulia1.5.3を使っていた(古い!)のですが、流石にバージョンアップが必要だと感じており、でもバージョンアップって怖いので今の1.5.3を残しつつアップデートしました。二年ぶりで記事を書く感覚を取り戻してないので、ウォーミングアップという形で備忘録として書いていきます。

前提

既にpythonなどでjupyter環境が入っていて、かつJuliaの何かしらのバージョンをMacにインストールしている方が前提です(今回の記事だと1.5.3)。

手順

まず、juliaupをインストールします。juliaupはjuliaのバージョン管理ツールで、pyenvやnvmと使い勝手が似ていると思います。今回はjuliaupを導入して、既存のjuliaを残しつつ最新のjuliaをインストールしていきます。

github.com

$ brew install juliaup

この時、下記のようにシンボリックリンクについてのエラーが発生する可能性が高いです。

Error: The `brew link` step did not complete successfully
The formula built, but is not symlinked into /usr/local
Could not symlink bin/julia
Target /usr/local/bin/julia
already exists. You may want to remove it:
  rm '/usr/local/bin/julia'

To force the link and overwrite all conflicting files:
  brew link --overwrite juliaup

To list all files that would be deleted:
  brew link --overwrite --dry-run juliaup

Possible conflicting files are:
/usr/local/bin/julia -> /Applications/Julia-1.5.app/Contents/Resources/julia/bin/julia

リンクを削除して、下記を実行します。

$ rm '/usr/local/bin/julia'

$ brew link juliaup
Linking /usr/local/Cellar/juliaup/1.11.22... 3 symlinks created.

juliaを叩くと、何も入ってない場合は現時点で1.9.3がインストールされます。

$ julia

次に、]を叩いてパッケージ追加するモードに変えて、下記を実行します。これで、jupyterの実行が可能になりました。

(@v1.9) pkg> add Ijulia

通常ならば、ここでjulia1.9.3のバージョンがjupyterのカーネルに登録されるはずなのですが、試しにjupyter kernelspec listと叩いて確認すると、julia1.9.3は見当たりません。ですので、ビルドして登録させます。

julia> using Pkg

julia> Pkg.build("IJulia")
    Building Conda ─ `~/.julia/scratchspaces/44cfe95a-1eb2-52ea-b672-e2afdf69b78f/8c86e48c0db1564a1d49548d3515ced5d604c408/build.log`
    Building IJulia  `~/.julia/scratchspaces/44cfe95a-1eb2-52ea-b672-e2afdf69b78f/47ac8cc196b81001a711f4b2c12c97372338f00c/build.log`

この後に、jupyter kernelspec listを叩いてみます。すると、今までの1.5.3のバージョンにjuliaupで入れた1.9.3が共存する形にできました。あとは、jupyter labといつも通りにターミナルから叩けば解決です。

$ jupyter kernelspec list
Available kernels:
  gophernotes            /Users/hogehoge/Library/Jupyter/kernels/gophernotes
  julia-1.5              /Users/hogehoge/Library/Jupyter/kernels/julia-1.5
  julia-1.9              /Users/hogehoge/Library/Jupyter/kernels/julia-1.9
  python3                /Users/hogehoge/Library/Jupyter/kernels/python3
  python3.8.6            /Users/hogehoge/Library/Jupyter/kernels/python3.8.6
  rust                   /Users/hogehoge/Library/Jupyter/kernels/rust