2024-01-31 (水)
熱海。
この日記はフィクションです.登場する人名・団体名・地名・職業などはぜんぶ架空のものです. なので実際のものとは何も関係がありません. それから,写真のように見える画像はCGもしくは念写によるものです.
ThinkPad X13のUSB Type-Cポートが左側にしかないのが地味に不便だな。右側のHDMIとUSB Type-Aのポートいらないので、代わりにUSB Cポートを一つ増やしてほしかった。
QuickJS しばらく更新されてなかったけど top-level-await 使えるようになっていた。
Visual Studioを2022にアップデートしたら色々ビルドできなくなって修正していた。
結局、VS2019まではデフォルト指定のある関数テンプレートの型パラメータの数が違っても、普通にオーバーロードされて有効な方の関数を呼べていたのがダメになったっぽい。
template <typename R>
R convert(int x);
と
template <typename R, typename T = std::remove_pointer<R>::type>
requires std::derived_from<T, Hoge<T>>
R convert(int x);
があるとき、以前は前者のテンプレートがHogeのサブクラスを受け付ける特殊化がされてなければ、後者を呼び出してくれていたのだけど、できなくなってしまった。gccもダメなので呼び出せないのが正しい?
修正面倒なので、とりあえずダミーの引数で数を合わせてコンパイル通るようにしたけど、C++のデバッグむずい。
Quest Proのブラウザ、昨年末くらいにimmersiveなWebXRセッションを使っているときBluetoothキーボードのカーソルキーを押すとブラウザうがクラッシュするようになってしまったのだけど、アップデートでクラッシュはしなくなったけどカーソルキーのイベントがjavascriptで全く取れなくなってしまった。仕方ないので、Alt+hjklを使う。
Meta Quest BrowserでXRセッション中でBluetoothキーボード使ってるとクラッシュしたりするの修正されたと思ったけど、今度はキー入力イベントがまともに取れなくなってる。。。あとで調べよう。
Windowsの設定で指定した時間が経過していないのにスリープすることがあって気になっていたのだけど、やっと原因が分かった。
最初は、無人スリープタイムアウトや、Modern Standbyを疑ってたのだけど、ディスプレイを閉じていると大丈夫だったりして何か挙動がおかしい。
Windowsのイベントビューアのログを見ると、何かのプロセスがスリープさせようとしてるみたいなので、疑わしいサービスを色々止めて様子を見ていた。
結局、ThinkPadに最初からインストールされていたElliptic Virtual Lock Sensorサービスが原因だった。サービスを停止するか、BIOSでUser Presence Sensingを無効にすれば勝手にスリープしなくなった。IRカメラが付いたThinkPadでデフォルトで有効になってるっぽい。
環境を新しくしたついでにSSH鍵を整理した。
鍵長やアルゴリズムをたまに変えるのだけど、登録しなおすのが面倒だったりログインできなくなるのが怖くて何に使ったのかも分からない古い秘密鍵がssh-agentにたくさん登録されていた。。。
思い出せる範囲で色々なとこにログインして鍵を更新したのだけど、20年前のアカウントがまだ生きてたりするのにも気付いた。
全部ed25519にしたかったけど、使えない環境があるのでRSA鍵も一つ残しておく。
ノートPCを新調したので、最近流行りの生成AIを試しに動かしてみる。Core i7-1355U + メモリ32GBでも小さいモデルなら動きそう?グラボは無いのでCore i7内蔵のGPUで頑張る。
とりあえず、手っ取り早く試したかったので llama.cpp を何も考えずmakeしたら動いた。
モデルは Hugging Face に色々あるみたいなのでダウンロードして色々試す。
https://huggingface.co/TheBloke/Llama-2-7B-GGUF を使ってみたけど、4bit量子化だと4GBくらいで動くのか。もう少し大きいモデルでも大丈夫そう。
CPUだとやっぱり遅いのとllama.cppはOpenCLに対応しているので、GPUを使いたい。IntelのGPUでOpenCLを使えるように色々インストールする。
最近のWSL2上ならGPUにアクセスできるのだけど、wsl2上のdockerコンテナ内でOpenCLが動かなくて嵌った。/dev/dri にはアクセスできるのだけど、それだけだと動かない?良くわかってないのでコンテナ内で動かすのはいったん諦めた。
CLBlast経由でGPUを使えるようになったけど、'-ngl 8' 以上にするとメモリ確保に失敗してしまうのと、GPUを20%くらいしか使ってないので何か設定が足りないかも。
LLM以外も動かしてみようと思ったのだけど、OpenCLあまりサポートされてない感じなので、Intelの OpenVINOを試してみる。
PyTorchに対応してると書いてあった気がするけど、PyTorch等からGPUを使えるようになるわけではなく、読み込んだモデルをOpenVINO用に変換して動かすっぽい。変換のためにPyTorchのモデルにダミーの入力を与える必要があったりして色々面倒。
色々試すなら OpenVINO Notebooks(https://github.com/openvinotoolkit/openvino_notebooks) が手っ取り早そうなので入れてみる。
とりあえず Stable Diffusion とかもサンプルがあるので画像生成してみる。CPUだけだと画像一枚生成するのに4~5数分かかってたのが、オンボードのGPUでも30秒くらいにはなった。Latent Consistency Modelも試してたけど、GPUで処理しようとするとなぜかうまくいかない。。。
Web UI は Jupyter Lab というやつみたいだけど、色々いじりながら動かしてると状態が分かりにくくて、微妙に使いにくい。。。
久しぶりにWindows環境を一からセットアップしたのだけど、アプリケーションのインストールはwingetでほぼ入るのは楽。
ただ、Windows 11の設定がとても分かりにくい。「設定」と「Windowsツール」と「コントロールパネル」のどこで設定できるのかわからない設定が多い。なんとなく設定に集約してコントロールパネルは深いところに追いやろうという意図を感じるけど、コントロールパネルからしかアクセスできない設定が意外と多い。
新しい環境でネイティブコードを呼び出してるNode.jsプロジェクトをビルドすると、毎回何かしら問題が起こるのだけど、今回も少し嵌った。
とりあえず、深く考えずに Node.jsと Visual Studio Community 2022 と Python3 の最新版で試す。
まず、ffi-napi をビルドしようとすると、MSBuildが失敗する。。そして日本語環境だとエラーメッセージが文字化けして見えない。
https://github.com/nodejs/node-gyp/issues/2885
callをコマンドとして呼び出してしまってる箇所があるみたいなので、上記issueのように修正するか、今回はパスの通った場所に以下のような内容の call.bat を置いてごまかした。
@%*
あと、node-gyp の実行時に distutils が無いと言われる。
ModuleNotFoundError: No module named 'distutils'
node-gyp は distutils に依存してるっぽいけど、最近のPythonには無いっぽい。https://stackoverflow.com/questions/77251296/distutils-not-found-when-running-npm-install少し前のPythonを使えば良いっぽいけど、とりあえず、pip install setuptools
したら解決した。
一回で正しくセットアップできたことないのだけど、本当に、みんな使ってるんだろうか。。。
お好み焼きを食べた
風邪で喉が痛い。。。
東京に戻ってきた。
年末に注文したX13が届いていた。
今まで https://www.amazon.co.jp/gp/product/B088LZMDV3 こういうやつでUSB-CからThinkPadの充電端子に変換してたけど、やっと直接USB PDで充電できるようになった。
X250に比べて薄くて軽くなったけど、カメラの出っ張り部分が少し邪魔な気がする。
昨日はほぼ平熱だったのだけど、また38℃あるな。。。
喉が痛い。とりあえずCOVID-19でもインフルエンザでもなさそう。
WSL2のネットワークがWindowsのNAT経由になってしまって使いにくいし、IPv6アドレス振るのも異常に難易度高いので、最近追加された networkingMode=mirrored
にしようとしたのだけど、色々めんどうだな。。。 https://qiita.com/shigeokamoto/items/fc9fa1a395f3fd72fafa
WSL1時代に比べてWSL2のネットワークやUSB機器等のハードウェアの扱いが難しいのどうにかしてほしい。個人的にWSL1で困るのはdockerのアップデートができないことくらいなのだけど。
なんか寒いと思ったら体温が39℃ある。。。風邪引いたっぽい。