ドメインを変更してコンテンツも移設します
移設先:https://rawbytes.org/
IT風雲児のブログ
IT界の風雲児の破天荒なブログです。よかれとおもってやってます。
2025年11月24日月曜日
2025年8月10日日曜日
macの環境構築を初めからやってみるよ:anyenvとphpenv
Macbook Airを買った。13インチのm4モデルだ。
これまでは2016年のintel Macbook Proだったので 実に約9年ぶりである。さらにその前はたしかPowerBook G4、もっと前はPower Macだった気がするので毎回プロセッサが変わってるということになる(Power Macはさすがに処分した)。
それはそうと、これまでは基本的に旧環境を引き継いでいたんだけどさすがにごちゃごちゃしてきたし、いまやほとんどのデータはクラウドに保存されているので、環境はイチから構築してみることにした。
網羅的ではないが、いくつか環境構築メモを残していこうと思う。
PHPが入ってなかった
を解消しようとして、homebrewでbzip2を入れた
$ brew install libiconv
configure: error: *** A compiler with support for C++17 language features is required.
-----------------------------------------
↑よく知らなかったが正規表現のライブラリらしい
configure: error: Cannot find libtidy
-----------------------------------------
PHP_BUILD_CONFIGURE_OPTSに--with-tidyオプションを指定 $ php -v
PHP 8.2.29 (cli) (built: Aug 11 2025 08:33:04) (NTS)
2024年4月7日日曜日
nvidiaのドライバーを更新したのでdocker環境も再インストールしたよ
一つまえの記事でUbuntu(20.04)のnvidia関連パッケージを一度すべて削除してしまったので、docker関係の環境も再インストールしなければいけなかった。
下記に従って実行してみた。自分の記載はあやしいのと、当然下記のnvidiaのリンク先のほうが記載が新しくなってる可能性があるので、なにか変だと思ったらnvidia.comにあたったほうが良い。
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html
1.パッケージのインストール
$ sudo apt install nvidia-container-toolkit
2.設定の変更
$ sudo nvidia-ctk runtime configure --runtime=crio3.dockerデーモンの再起動
$ sudo systemctl restart docker
4.確認する
下記でGPUの情報が ホストでnvidia-smiを実行したときと同じように表示されればOKのはず
$ sudo docker run --rm --runtime=nvidia --gpus all nvidia/cuda:11.6.2-base-ubuntu20.04 nvidia-smi
Sat Apr 6 16:34:33 2024
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 550.54.15 Driver Version: 550.54.15 CUDA Version: 12.4 |
|-----------------------------------------+------------------------+----------------------+
| 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 GeForce RTX 3060 Off | 00000000:04:00.0 On | N/A |
| 0% 49C P8 11W / 170W | 539MiB / 12288MiB | 0% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
ホストOS上でnvidia-smiを実行したときが下記。大丈夫そう。
$ nvidia-smi
Sun Apr 7 01:40:48 2024
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 550.54.15 Driver Version: 550.54.15 CUDA Version: 12.4 |
|-----------------------------------------+------------------------+----------------------+
| 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 GeForce RTX 3060 Off | 00000000:04:00.0 On | N/A |
| 0% 50C P5 18W / 170W | 560MiB / 12288MiB | 2% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
Ubuntuをアップデートしたら起動しなくなったけど色々やったら起動するようになった(nvidiaドライバー)
久しぶりにUbuntu(20.04)を起動したのでパッケージのアップデートをしようとおもった。
「ソフトウェアの更新」を実行すると、「部分的にしかアップデートできない」旨の表示が出た。が、特に気にせず、依存関係か何かで何回かに分けてアップデートしないといけないのかなとおもいってそのまま実行、再起動を行った。
起動メニュでUbuntuを実行すると、黒いコンソールの 画面までは進むが、たぶんデスクトップに切り替わるタイミングで画面がフリーズして起動しないという現象に遭遇した。
理由はわからないが、はじめにUbuntu環境をインストールしたときのGPUがGTX1070で、そのままRTX3060に換装して使い続けていたので、なにか不整合が起きてしまっていたのかもしれない(表面上は動いていた、と思う)。
困った。ということでいろいろ調べながらやって復旧した(たぶん)なのでやったことメモ。LinuxおよびUbuntuに詳しい訳ではないので、余計なことをやったりしているかもしれません。実際にはもっといろいろ試行錯誤しているが、結果的に整理すると意味あったのは以下だけだと思う。
1.Ubuntuをリカバリーモードで起動
これは環境によってやり方がまちまちかもしれない。私の場合はGRUBのメニューの"Advanced options for Ubuntu"みたいなやつを選んで、とにかくRecoveryモードでUbuntuを起動する。まずNetworkを選択するとネットワークが使えるようになるらしいので、それを選んだあとにRootを選んでプロンプトを表示。
※このとき苦し紛れにメニューにあるdpkg項目を選んで、gcc関係のパッケージの修復?が行われたようなのだが、これが関係あったかどうかはわからない(たぶんない)
2.起動ログを確認
# journalctl -p err -b
で、起動時のエラーログを見ることができるらしい。気になったのは、
Failed to start nvidia-powered service
とかいうあたりで、ググったりした結果Nvidiaのドライバが壊れてるんだろうとあたりをつけた
3.nvidiaのドライバ類をすべて削除
# sudo apt-get remove --purge '^nvidia-.*'
# sudo apt autoremove
で、いちどnvidia関連のパッケージをすべて削除した。
ついでにdockerのnvidia関連パッケージも消えてしまったがこの際作り直すことにしていったん忘れる。
(※こうするとnouveauドライバが有効になるはずだぜという記事もみつけたのだが、少なくとも自分の環境では起動しなかった(soundがどうとかいうエラーが残っていた。これも調べるとnvidia関連が原因に見えた)。 miniPC+eGPUという環境なのも影響しているのかもしれないし、それでなにか設定が残ってしまっていたのかもしれない)
4.nvidiaのドライバを再インストール
仕方ないのでリカバリーモードのままnvidiaのドライバの再インストールをした。
Nvidiaのサイトのままに、
# sudo ubuntu-drivers install
を実行して、自動的に最適なドライバを検出してもらった。ここは問題なくインストールが完了した。よく考えたらリカバリーモードでrootに入っているのでsudoいらんことに気づいた(今)。
5.再起動
# sudo reboot
で再起動をかけると、無事に起動してデスクトップが表示された。
TODO:docker関係の構築をやりなおさなければいけない。
2023年4月2日日曜日
NVidia Container Toolkitでgpu-enabledなdocker imageで作業したときの作業メモ
GPUを利用する機械学習系の環境を構築する際に 、CUDAとフレームワーク等のバージョンの整合性で困ることがある。必ずしも最新版にしておけばいいというわけではないことが結構ある(気がする)
dockerコンテナ内でgpuが利用できるようになるNvidia Container TookitをNvidiaが提供してくれているので、これを利用すると任意のCUDAバージョンの環境が構築できるようになりますという作業メモ。
1.Nvidia Container Toolkitをインストール
ホストOS側に、Nvidia Linux DriverとNvidia Container Toolkitをインストールして、docker runtimeにnvidiaランタイムを認識してもらうまで下記のマニュアルに沿って設定。
ホスト側にはNvidia Linux DriverおよびNVidia Container Toolkit だけで良いので、CUDAで気を病む必要がない(たぶん)
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html
2.gpuが認識されているかの確認方法
これも書いてある通りだが、
$ sudo docker run --rm --runtime=nvidia --gpus all nvidia/cuda:11.6.2-base-ubuntu20.04 nvidia-smi
のようにして、ホストOSと同様にgpuの情報が表示されればOK。
3.dockerイメージはどこにあるの
https://hub.docker.com/r/nvidia/cuda
ここに任意のベースOSとCUDAのバージョンの組み合わせのtagがあるので、必要なものを使えば良い。
4.必要なコマンドとかが見当たらないんだけど...?
上記のDocker Imageは、NVidia関係のツールが準備されている一方、curl gitなどもインストールされてないし、python もインストールされていないっぽい。なので実際には、上記イメージをベースにして下記みたいに共通で使うパッケージをインストールしたイメージを作っておくのが良いと思う。
---------------------------------
$ cat Dockerfile
FROM nvidia/cuda:11.6.2-base-ubuntu20.04
# Install needed packages
RUN apt-get update && \
apt-get install -y --no-install-recommends curl git python3 python3-pip && \
rm -rf /var/lib/apt/lists/*
# Make python3 default
RUN update-alternatives --install /usr/bin/python python /usr/bin/python3 1
---------------------------------
上記のうち最後の行は、Ubuntuの標準パッケージではpythonコマンドではpython2系が起動してしまうっぽいので、それを切り替える方法(詳しくはupdate-alternativesで検索せよ)。本当はpyenvとかでcuda同様に必要なpythonランタイムを選択したほうが良さそうな気もするが、とりあえずこのようにする
5.作業はどんなふうにすれば?
docker image内に入って作業するには以下のようにすれば良い。 (image名)のところは作成した任意のimage名にする。あとの注意点は--gpus allとかのオプションをつけないとだめなのと、一時的に作業とか確認したいだけのときには--rmオプションもつけないとゴミのコンテナがたくさんであとで困る(rmオプションは実行終了後に当該コンテナが自動で削除される)。
$ docker run --rm -it --gpus all (image名)
2023年3月25日土曜日
Stable Diffusion WebUIをubuntu, pyenv virtualenvの環境でインストールした
Stable Diffusion WebUIをUbuntuとpyenv-virtualenvの環境でインストールした。
公式のマニュアルどおりではうまく行かなかったので、正しいのかはわかってないけどとりあえず動いたので差分のメモをしておきます。試したのは2023/3/25。
Ubuntuの環境は以下の通り
$ cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.3 LTS (Focal Fossa)"
1. まずpyenv virutualenvで専用の環境を作る。現時点で要求のpythonのバージョンが3.10.6とのことだったので従う
$ pyenv virtualenv 3.10.6 stable-diffusion-webui
みたいにして、3.10.6をベースにしたvirtualenv環境を作っておく。
2. "Automatic Installation on Linux"のコマンドでは起動時にstable diffusionが見つからないと出て起動できなかった。仕方がないのでここのドキュメントにあるManual Installの方を試した。
3.これは単純に私が理解してないだけだと思うけど、Manual Installの最後の意味がわからなかった(何をどこに配置すればいいのかがわからなかった)
# (outside of command line) put stable diffusion model into web ui directory
# the command below must output something like: 1 File(s) 4,265,380,512 bytes
dir model.ckpt結論としては、 ダウンロードするモデル(checkpointファイルと呼び、.ckptファイルというらしい)は
このあたりからダウンロードして、配置先は
$(stable-diffusion-webui-base)/models/stable-diffusion/ の配下に置いた。
4.最後に
$ python webui.py
を実行すれば起動するとあるのだが、
AssertionError: Couldn't find Stable Diffusion in any of: ['/home/xxx/src/stable-diffusion-webui/repositories/stable-diffusion-stability-ai', '.', '/home/xxx/src']
みたいなエラーが出て起動できなかった。ぐぐってみるとなんかのバグか環境依存な気もしたんだけどよくわからなかった
5.困ったので、
$ python launch.py
を実行してみた(launchと書いてあるんだからとにかく何かが起動するんだろうと思っただけ)
そうすると
$ python launch.py
Python 3.10.6 (main, Mar 25 2023, 07:43:47) [GCC 9.4.0]
Commit hash: a9fed7c364061ae6efb37f797b6b522cb3cf7aa2
Installing open_clip
Cloning Stable Diffusion into ...(略)
みたいに出て、何やら追加でモジュールがダウンロードされているように見えた。
最終的に
Running on local URL: http://127.0.0.1:7860
と表示されて、ここのURLにアクセスするとStable Diffusion WebUIがブラウザ上で表示できた
さらに、以降は
$ python webui.py
でも起動できたので、インストールの最後の段階でpython launch.pyを実行することが必要だったのだろう(きっと)。