Bag of ML Words

ML = Machine Learning, Music Love, and Miscellaneous things in daily Livings

pipevnももう古くてpoetryらしいよ・・・

pipenvですごい!新世代!快適!!

と思ってたらもうpoetryの時代らしい。

cocoatomo.github.io

【Python】Poetry始めてみた & Pipenv から poetry へ移行した所感 - Qiita

 

早速導入してみたんですが、確かにほぼほぼpipenvと同等のことはできて、あと初期プロジェクト設定とかが(testとかも込みで)作れてよいっぽい。

インストール、アンインストールもシステム全体に依存しないで $HOME/.poetryに保存されるだけっぽいし。実によろしそう。

ということで乗り換えたので、以下使い方コマンドのメモ書き

 

導入

$ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python
$ source .zshrc

 

仮想環境をつくる

まず、pyenvで元となるpythonを決めて、pyenv localでそのディレクトリ専用の設定にする。

そののち、空のディレクトリにpoetry環境つくるときは new, 既存ディレクトリに設定するときは init.

$ poetry new new-package  # カレントディレクトリの下にnew-packageディレクトリができる

 

$ poetry init # カレントディレクトリに仮想環境が追加される

newすると、pyproject.tomlという依存関係をまとめるhuman readable fileとReadMe, パッケージディレクトリ(my-package)、テストディレクトリが作成される。

initの場合は対話的にpyprojectl.tomlを作れるみたい。

 

そのあと、installでpyprojectltomlに書いてある依存ライブラリをインストールする。

$ poetry install

 

仮想環境シェルを起動する

$ poetry  shell

 終わるときは単純に  $ exit

仮想環境にライブラリ足す

$ poetry add numpy

--dry-runで、実際にインストールしないでアップデートの状況を見ることもできる

VS code: 便利なプラグイン(自分用メモ)

マシン取り換えるときとかにVSCodeで入れておきたいやつをメモしていくよ

 

環境整備 

- emacs keymap improved

- japanese language pack for visual studio code

- vscode-icons これは超おすすめ!

  - なんというか、快適度?が段違い。

 

リモート・仮想環境

- Remote Development これは(今の仕事環境的に)最強に近い。

  - kubernetes podにも直接つなげてVS Code内でファイル編集もterminalも立ち上がっちゃう。

  - Remote - WSL, SSH, ...などが入る

- Kubernetes

 

プログラミング支援

 

- YAML

- Bracket Pair Colorizer

- Rainbow CSV

- Python

- Python Docstring Generator 便利

  - ""書いて補完される。べんり。

- Jupyter

  - X環境立ち上げなくてもVSCodeの中で絵が見れるのは助かる。特にRemote/Podと組み合わせると最 of 高

 

 

VS CodeでGUIなjuyputer notebook + WSL interpreter


が使えるよっていう。なんと、WSL2のターミナルからVSCodeを起動できる。そして、VSCodeがjupyter notebookをサポートしてる。

 

参考

aadojo.alterbooth.com

 

前提

 

VSCode: python plugin, remote development pluginをインストールしておく(普通してる)

WSL2: ubutu 18をいれてます。pipenvもいれておきます

 

WSL2上の作業

 

作業ディレクトリでpipenv環境を作ります

$ pipenv --python 3

あるいは

$ pipenv shell でもよさげ

jupyterと、ipykernelっていうのが必要になります

$ pipenv install jupyter ipykernel

 

終わったらvscodeをコール。

$ code .

 

VSCode側の作業

 

新規windowsがWSLにremoteでつないでpython interpreterを使える状態にあることを確認します。左下の部分が緑色に光ってWSL:ubutu-18.04ってなれば多分つながってる

 

Ctrl + shit + pでコマンド窓を立てて、jupyterとかするとjupyter notebookを新規作成みたいなのが補完されるので選択すると動きます、簡単だな。。。。

 

f:id:Dr_KayAi:20201103022925p:plain



 

 

 

 

 

Texの章の出方をかえる

\appendix

\def\thesection{Appendix~\Alph{section}}
\def\thesubsection{\Alph{section}.\arabic{subsection}} 

 

こうすると、sectionは Appendix A, Appendix B, ...ってなって

subsectionは A.1, A.2,..., B.1, B.2, ...ってなるってtexじいさんが言ってた!

今はpyenv + pipenv!

virtualenvとかcondaとか使わなくなったらしいよ。。。

 

ちょっと使ってみましたが、たしかにpipenvわかりやすいです。どこでもなんでもpipenv install でディレクトリごとの仮想環境がつくれて、pipenv shellで仮想環境立ち上げて、pipenv installで仮想環境内でモジュール管理しながらもじゅーつ追加できる。

 

環境はWindows10 WSL2 + ubuntu18です

 

pyenvインストール

いろいろなところに書いてある通りにインストールしますが、そのまえにlibffiが必要です。これがないとpipenvがエラーはいてうごきません。

 

sudo apt install libffi-dev

 

pyenvをインストールして

 

curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash

 

以下をrcファイルに書き足します

export PATH="/home/<user>/.pyenv/bin:$PATH"

eval "$(pyenv init - zsh --no-rehash)"

 

じゃあ、pyenvで何かpythonインタプリタをインストールします。

 

pyenv install 3.8.5

pyenv global 3.8.5

python -V   <== python 3.8.5になってるはず

 

pipenvインストール

インストールはpipで終わりです

 

pip install pipenv

 

試しにディレクトリほって環境を作ってみます。

mkdir hoge

cd hoge

pipenv install --python 3.8.1  <-- pyenvとは違うインタプリタもいけてしまう

pipenv shell <-- 仮想環境を起動

(hoge) python -V  <== 3.8.1になる

(hoge) pipenv install boto3 <== boto3モジュールを3.8.1にインストール

これで、hogeディレクトリ内のpython仮想環境にはboto3入りの3.8.1ができますが、それ以外のディレクトリや、pipenvを起動していない状態のhogeディレクトリではboto3なしの3.8.5がインタプリタになります。

 

参考

【Ubuntu 18.04】pyenv+pipenvでPython環境構築 - Qiita

Pyenv と Pipenv で Python 環境を構築する - Qiita

pyenv、pyenv-virtualenv、venv、Anaconda、Pipenv。私はPipenvを使う。 - Qiita

Zoteroの使い方(我流、逐次更新)

Mendeley+DropBoxで運用していたんですが、PC移行のときから調子が悪くなったのでずっと乗り換えたいと思っていました。

 

で、Twitterで相談したら、"Zoteroいいよ"ということなので、早速導入始めています。

自分の導入過程のメモ書きも兼ねているので、逐次更新です

 

Zotero?

Opensourceの文献管理ソフトウェア?ぽい

https://www.zotero.org/

 

 

導入にあたって、以下の記事を参照しています~

 

humosy.hatenablog.com

 

目標要件

クラウドストレージにPDF本体を大量に保存

zoteroのサーバには文献DB情報のみを格納させる

クラウドストレージのパスを適切に参照させることで、将来的にPCを移行しても苦労しないですむようにする

当然Overleafとかようのbibは必要

 

インストール

まずは何も考えずに公式サイトからstand aloneのバイナリをダウンロードして展開。何も問題なくインストールされる。あ、いきなり日本語でした。素晴らしい

 

f:id:Dr_KayAi:20200209233812p:plain

 

Zotfile

Zotfileってのは上記3リンクいずれもおすすめしているので導入する。

指摘したディレクトリ構造を維持するように、文献アイテムに添付したPDFをrenameしてmvしてmkdirしてくれる。

 

https://ohdachi.github.io/ohdachi_lab/researches/2018/02/02/zotero_zotfile.html

にあったように、zotfile preferenceの"Use subfolder defined by"に/%w/%yと書いた。これで雑誌-発行年というディレクトリになるはず・・・ならなかった。あー、これマックだ。Windowsの場合は\%w\%yと書く。

 

嫌な感じのディレクトリでも、設定を変えて再度renameすると勝手にPDFを移動してくれる。つまり、この機能を使うと、取得したPDFを適切なディレクトリ(私の場合はGoogle drive)に移動して名前を変える手間がなくなる、ということかな?

  • 書誌情報をzoteroに登録
  • PDFを落としてきて、添付ファイルとしてリンク。落とす場所はどこでも良い。
  • すかさず右クリックでzotfile rename

下記のchrome extensionを使うともっと楽になるのかも?

 

あーちょっとがっかりポイント

 

文献管理とノート整理に Zotero が最適だった - 博士以前

にあるように、論文/Projectごとにサブフォルダ(コレクション、と呼ばれる)を切って、それぞれにPDFを登録するようにしたい。この場合、zotfileのsubfolder設定は\%cとなる

 

ただ、一つの論文が複数のProjectに入る可能性が十分あるので、一つの文献アイテムと対応するリンクが複数のコレクションに入ってほしいんだけど、それは無理っぽいな?

一つのPDFは一つのサブフォルダにしか置けない。

 

f:id:Dr_KayAi:20200209233809p:plain

 

ただ、文献アイテムを複数のサブフォルダに登録することは問題ないようだ。

zoteroが正しく機能していれば、PDFのありか自体は気にしない(直接探しに行かない)のが正しい運用っぽい。

ふむー。そうすると/%cとかするよりは年数とかで分けたほうがいいような

 

ガッカリポイント2

あと、名前決めるときにjournal名はみてくれるけどproceedingはみてくれないのか?設定でなんとかできないのかなーICMLとか出てくれないと困る。

とりあえず、文献アイテム登録時にpublisherにICMLとかの会議略称書いてしまえば運用できるけど、それって嘘bibtexの元だなぁ・・・

ちゃんと設定できたよ!

zotfile preferences --> renameing rulesにPDFのファイル名自体のrename規則を指定するところがある。

 

{%a_}{%y_}{%j_}{%t}

 

とすると、第一著者_発行年_書誌名(proceedingsもOK)_タイトル.pdf

としてくれる。最高か!

 

ただ、proceedingsの会議略称名はつけられないぽい。

あと、ディレクトリ名には会議名がでてこないのかな・・・昨夜出てきた気がするんだけど、なんだったんだ・・

ここが解決出来れ場完璧なので、できれば自分でrename jsonをいじりたいんだけど、いじり方が分からない(JSONファイルにアクセスできない)

 

ディレクトリに振り分ける際に、%jを使ったら、会議名しっかりそろえる機運になるかもしれないな?

 

Chrome addon

Zoteroをインストールしたら、勝手にaddonのインストールをお勧めされたのでインストールした。

 

早速つかってみました。

試しにICLRのOpenReviewで、アドオンボタンをポチっとしてみる。

 

f:id:Dr_KayAi:20200210133214p:plain

 

 おお。。。リンクされてるPDFまで一緒に保存されたぞ

 

f:id:Dr_KayAi:20200210133400p:plain

 

 

このあとrenameすれば保存用google driveに整理されて保存されるっつう寸法!

すごい・・・

 

Better Bbitext

文献管理ソフト Zotero ~ 設定編~ - humosy’s blog

これは必要そうなので導入

 

ToDo

chrome addon つかう

Overleafとの連携; https://libanswers.caltech.edu/faq/204206

 

 

今更だけど、chaier trainer + optunaで探索枝かりするとき

chainer.org

 

こんなのが出た直後でなんですが、OPTUNAは今後も開発継続されます

 

で、まあchainerはわかりやすいしdocもかなり充実してるので、メンテナンスモードはいってもしばらくは使われると思います。

 

そこで、chainer + optuna prunerの使い方。

 

optuna.readthedocs.io

 

生コードの実例だと、trainerじゃなくてちょくせつepoch回して、pruningの基準となる量をtrialに報告してるけど、まあtrainer使うよね・・・

そのときどーすんの?とおもったけど、

Integration moduleを使えばよいっぽい。

 

optuna.readthedocs.io