Blog

  • AWS Certificate Managerをよく分かってなくて予定外の出費が発生した

    ふとクレカの請求を確認してみると、AWSから身に覚えのない多額の請求が来ていることに気づく。調べてみるとAWS Certificate Managerが数万円請求されている??

    ACMって無料じゃないの??ということで慌てて調べてみる

    https://dev.classmethod.jp/articles/amazon-certificate-manager-export-certificate-file

    >ACM を利用してエクスポート可能なパブリック証明書を作成すると、追加料金がかかります。完全修飾ドメイン名ごとに 15 USD、ワイルドカードドメイン名ごとに 149 USD かかります。証明書の有効期間中に一度だけお支払いいただき、証明書の更新時にのみ再度課金されます。詳細については、「AWS Certificate Manager サービスの料金」ページにアクセスしてください。

    とのこと。確かに深く考えずにエクスポートしたいじゃんと思って、エクスポートを請求していたよ…さらにこれも深く考えずにワイルドカードにしてしまっていた…高い授業料と思うしかなさそうだ

    しかし料金が相変わらずめちゃくちゃ分かりづらいのはどうにかならないのか…

  • サイトを引っ越しました

    imho.jpから変更します
    Bloggerの.atomファイルのインポートはプラグインが対応していた
    https://github.com/mnasikin/btw-importer

  • macの環境構築を初めからやってみるよ:anyenvとphpenv

     Macbook Airを買った。13インチのm4モデルだ。

    これまでは2016年のintel Macbook Proだったので 実に約9年ぶりである。さらにその前はたしかPowerBook G4、もっと前はPower Macだった気がするので毎回プロセッサが変わってるということになる(Power Macはさすがに処分した)。

    それはそうと、これまでは基本的に旧環境を引き継いでいたんだけどさすがにごちゃごちゃしてきたし、いまやほとんどのデータはクラウドに保存されているので、環境はイチから構築してみることにした。

    網羅的ではないが、いくつか環境構築メモを残していこうと思う。

    PHPが入ってなかった 

    そもそもとしてこのbloggerを自前のWordPressに移行しようと思っているのだけれど、どうやらbloggerのエクスポート形式が最近?RSS XMLからatomに変更されてしまって、インポートができないっぽい。インポートするにはatomからrssへの変換が必要そう。
    調べるとここに情報があった:https://atom.geekhood.net/
     
    WordPressのdockerイメージと合わせてPHPは8.2.29を入れようと思った
    #振り返るとどうやら8.2系以降を入れようとしたことによるエラーも多そうだった 
     
     (続く)
    入れたいもの:$ phpenv install 8.2.29 
    エラーを一つずつ潰す… 
    $ brew install pkgconf
    $ brew install openssl
    ここでエラー
    configure: error: Please reinstall the BZip2 distribution
    を解消しようとして、homebrewでbzip2を入れた 
    $ brew install bzip2 
    が、解消しない 
        export LDFLAGS=”-L/opt/homebrew/opt/bzip2/lib”
        export CPPFLAGS=”-I/opt/homebrew/opt/bzip2/include” 
    を設定したのだが状況が変わらずなので、別の方法
        export PHP_BUILD_CONFIGURE_OPTS=”–with-bz2=$(brew –prefix bzip2)” 
    を.zshrcに設定して $ source ~/.zshrc で次に進むことができた
     
    $ brew install libpng
    $ brew install libjpeg-turbo
    $ brew install libiconv 
        export PHP_BUILD_CONFIGURE_OPTS=”–with-bz2=$(brew –prefix bzip2) –with-iconv=$(brew –prefix libiconv)” 
     
    $ brew install icu4c
     
    さらにエラー 
    —————————————–
    configure: error: *** A compiler with support for C++17 language features is required.
    —————————————–
    こんなものを見つけた 
    https://zenn.dev/shogogg/articles/b358c1dec37426785a12 
    https://github.com/php-build/php-build/issues/783
    …正直詳細はあんまりわからんが
    $ export CXXFLAGS=”-std=c++17″
    を.zshrc に書いて
    $ source ~/.zshrc で進んだ
     
    $ brew search oniguruma
    ↑よく知らなかったが正規表現のライブラリらしい
     
    次のエラー 
    —————————————–
    configure: error: Cannot find libtidy
    —————————————– 

     $ brew install tidy-html5

    こういうパッケージ名を探すのは正解はどうなんだろう 
     
    解消しないなーと思ったら先人のブログ 
    https://qiita.com/kmuro/items/5eb1b09f333a4a07dfbe 
    > 環境変数PHP_BUILD_CONFIGURE_OPTS--with-tidyオプションを指定 
    そうだろうと思った。パターンは見えてきた
    .zshrc の該当記述はこんな状態に 
    export PHP_BUILD_CONFIGURE_OPTS=”–with-bz2=$(brew –prefix bzip2) –with-iconv=$(brew –prefix libiconv) –with-tidy=$(brew –prefix tidy-html5)” 
     
    $ brew install libzip
     
    こんどは以下のようなエラーになった(たしかにjpeg-turboパッケージを入れた)
    ld: warning: search path ‘/opt/homebrew/opt/jpeg/lib’ not found
     
    phpenv installはエラー終了しているが、インストール自体はできているようだ…どういう状態?
    $ phpenv global 8.2.29
    $ php -v
    PHP 8.2.29 (cli) (built: Aug 11 2025 08:33:04) (NTS)
     
    warningは一回無視するとしてこのへんかなあと検討をつける 
    PEAR package PHP_Archive not installed: generated phar will require PHP’s phar extension be enabled. 
    ググるとブログを見つけた。autoconfとな 
    https://zenn.dev/massat/articles/install-php8-with-phpenv 
     
    $ brew install autoconf
    $ phpenv install 8.2.29
    (略) 
    [Success]: Built 8.2.29 successfully.
    (略)
     
    ようやく成功したようだ
     
  • 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=crio

    3.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関係の構築をやりなおさなければいけない。


  • 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名)

  • 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を実行することが必要だったのだろう(きっと)。


  • Windowsでvim環境を構築するための道のり:終章

    昨日Windowsでhowmをもう一回使いたくてvimでやってみるかと思ったんだけど、今日調べていたらVSCodeで類似の拡張があることがわかった。もともとhowmはちょっと機能多すぎてメモとTODOぐらいできればいいんだけどな、、という感じだったのでむしろちょうど良いぐらいかもしれない。
    vscode-memo-life-for-you
  • Windowsでvim環境を設定するための道のり:設定はどこに書けばいいのか

    昔Emacsでhowmというツールを使っていたのを思い出したんだけど、もうEmacsとか使うの気が重いな、、と思っていたところvimにQFixHowmというプラグインがあるらしいので、そちらでセットアップしてみることにしました。いったんWindows Subsystem for Linuxのコンソール上のvimでセットアップしてみたんだけど、日本語切り替えとモード切替がめんどくさすぎて無理っぽかったので、gvimで再トライです。gvimはまともに使ったことが無いので、設定ファイルはどこに置けばいいのだ、、?からスタートです。
    • 閑居う変数としては、$VIMと$HOMEが存在する。
    • 確認するときは
      :echo $VIM
      または
      :echo $HOMEで表示される
    • windows上では、.vimrcでなく_vimrcと_gvimrcとして作成する(これは単にWindows上のファイル名規則の制限かな)
    • _gvimrcはGUI版のvim上でだけ有効
    • $VIM_vimrcと$VIM_gvimrcは編集に管理者権限が必要になるのと、$HOME_vimrcまたは$HOME_gvimrcが存在すればそちらが優先(上書きされるので、これを作成すれば良い。
    ためしに$HOME_gvimrcに
    colorscheme slate
    と書いて起動したらカラー設定が変更されたので、OKとします。
    見たサイト:https://oki2a24.com/2016/03/11/put-vim-setting-file-in-windows/
    本当はvscodeでhowm的な機能があればいいなと思ってます。
    あとはhowm(的なもの)が使えればいいというのがゴールなのでやっぱりEmacsというセンも捨ててはいないです。
  • ファイルが含まれているrpmパッケージの情報を表示する

    $ rpm -qf {ファイルパス}|awk -F’-[0-9]’ ‘{print $1}’|xargs yum info