らんだむな記憶

blogというものを体験してみようか!的なー

【ピン留め】よく見る記事

適当に編集しながら使う。

Jupyter/matplotlib

vim

Docker/LaTeX

論文翻訳

pdf を結合したい

>>> from pypdf import PdfMerger
>>> import glob
>>> pdfs = [f for f in glob.glob(".pdf")]
>>> m = PdfMerger()
>>> for f in pdfs: m.append(f)
>>> m.write("a.pdf")
>>> m.close()
def split_pdf_pages(src_path, dst_basepath):
    src_pdf = pypdf.PdfReader(src_path)
    for i, page in enumerate(src_pdf.pages):
        dst_pdf = pypdf.PdfWriter()
        dst_pdf.add_page(page)
        dst_pdf.write(f'{dst_basepath}_{i}.pdf')

split_pdf_pages('data/src/pdf/sample1.pdf', 'data/temp/sample1')

Razer Synapse installer をブロックする

How to block Razer Synapse installer on Windows 10 - LHFM が詳しい。

C:\Windows\Installer\Razer を削除して、同名のフォルダを作成して、セキュリティタブから

Step 8: Select the SYSTEM user, check the Deny box on the Write permission, click Apply (you will get a bunch of scary warnings, just accept them, you are not locking your personal files or anything), and then click OK. You should be done at this point.

ということらしい。Windowsインストーラを探しにいって拾ってくるということだとして、別に要らないんだけどな。繋いだら普通に使えているし。

Razerのマウスを接続するだけでシステム特権昇格が可能になる脆弱性が発見される - GIGAZINE もなぁ・・・。

MacTeX アンインストール

いまとなっては全然使ってないので。

==> Removing files:
/usr/local/texlive/2018
/Applications/TeX
/Library/PreferencePanes/TeXDistPrefPane.prefPane
/Library/TeX
/etc/paths.d/TeX
/etc/manpaths.d/TeX
/usr/local/texlive/texmf-local/
~/Library/texlive/
~/Library/TeXShop/

この辺か。

TeXShop FAQ - TeX Wiki

なお,10.9 Mavericks 以降では,plist を手動で削除した後には次のコマンドを実行する必要があります。(理由

killall -SIGTERM cfprefsd

これは流石に今時は不要かな?

ざっくりとは 5GB くらい空き容量が増えたと思う。

拡散モデル

DDPM

  • https://github.com/cloneofsimo/minDiffusion を使用。
  • MNIST, KMNIST 共に a2-highgpu-1g で 8494MiB 程度の VRAM を使用。
    • batch_size < 8 で、VRAM の使用量が 1GB 程度まで落ちる。batch_size = 8 で 6GB 程度。何故急に増えるかは未調査。
  • 1 epoch あたり、約 55 秒。

GCE の新しいインスタンスを作る

GCE の新しいインスタンスを作りたい - らんだむな記憶 の続き。

gcloud compute --project=プロジェクトID instances create ml-dev --zone=asia-northeast1-a --image-family=ubuntu-2004-lts --image-project=ubuntu-os-cloud --subnet=VPCで作成したサブネット名 --network-tier=PREMIUM --no-restart-on-failure --maintenance-policy=TERMINATE --preemptible --deletion-protection --machine-type=a2-highgpu-1g --labels=env=ml-dev --create-disk="name=ディスク名,image-family=ubuntu-2004-lts,image-project=ubuntu-os-cloud,size=300GB,type=pd-balanced,boot=yes"

VM インスタンス自体は簡単に作成できた。

タイムゾーン

sudo timedatectl set-timezone Asia/Tokyo

pyenv

色々考えた結果、Install TensorFlow with pip でやっているような Miniconda で CUDA/cuDNN 環境をいきなり作る必要もなさそうと考えて、グローバルに CUDA 11.8 を入れる事にする。Miniconda はすぐには使わないので、引き続き pyenv を使う。なので、準備: Home · pyenv/pyenv Wiki · GitHub

その後:

pyenv install 3.11.2
pyenv rehash

NVIDIA ドライバ & CUDA 11.8

CUDA Toolkit 11.8 を導入することで NVIDIA のドライバもインストールされる。

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda-repo-ubuntu2004-11-8-local_11.8.0-520.61.05-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2004-11-8-local_11.8.0-520.61.05-1_amd64.deb
sudo cp /var/cuda-repo-ubuntu2004-11-8-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda

して、暫く気長に待つと途中で以下のようなメッセージが出ながらログが流れていく:

*****************************************************************************
*** Reboot your computer and verify that the NVIDIA graphics driver can   ***
*** be loaded.                                                            ***
*****************************************************************************

VM 再起動後は

$ nvidia-smi 
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 520.61.05    Driver Version: 520.61.05    CUDA Version: 11.8     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA A100-SXM...  On   | 00000000:00:04.0 Off |                    0 |
| N/A   28C    P0    47W / 400W |     76MiB / 40960MiB |      0%      Default |
|                               |                      |             Disabled |
+-------------------------------+----------------------+----------------------+
$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Wed_Sep_21_10:33:58_PDT_2022
Cuda compilation tools, release 11.8, V11.8.89
Build cuda_11.8.r11.8/compiler.31833905_0

PyTorch 2.0

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/test/cu118

Jupyter

Jupyter サーバーの保護 - Deep Learning AMI を参考にする。

$ cd ~
$ mkdir ssl
$ cd ssl
$ openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout mykey.key -out mycert.pem

別のインスタンスタイプから変更する場合

以下は動かない可能性がある。GPU がマシンタイプと合わない場合にエラーになる。

gcloud compute --project=プロジェクトID instances set-machine-type ml-dev --machine-type=a2-highgpu-1g --zone=asia-northeast1-a

ゾーンの移動

Move a VM instance between zones or regions  |  Compute Engine Documentation  |  Google Cloud

Docker

docker ... --gpus all を通すため:

Installation Guide — NVIDIA Cloud Native Technologies documentation

$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
      && curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
      && curl -s -L https://nvidia.github.io/libnvidia-container/experimental/$distribution/libnvidia-container.list | \
         sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
         sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
$ sudo apt-get update
$ sudo apt-get install -y nvidia-container-toolkit
$ sudo nvidia-ctk runtime configure --runtime=docker
$ sudo systemctl restart docker