お知らせ

現在サイトのリニューアル作業中のため、全体的にページの表示が乱れています。
投稿日:
Node.js

主な変更点に関して個人的にざっくりまとめてみる。詳細は公式のリリースノートを確認すること。v18やv16と比べるとアップデートが多い気がする。個人的にはv12, v14並に嬉しいアップデートかも。特に単一バイナリのサポートとARM64版Windowsのサポートが強力だと思います。

権限モデルの追加

--experimental-permissionフラグを付けることでファイル システム操作、子プロセスの生成、ワーカー スレッドの作成など、プログラムの実行中に特定のリソースへのアクセスを制限できる様になった模様。

実験的機能であれば16のときにもあったと思うが、この時との違いは詳しく確認してない。参考程度にv18とlatestとのドキュメントリンクを置いておく。

  • https://nodejs.org/api/permissions.html#process-based-permissions
  • https://nodejs.org/docs/latest-v18.x/api/permissions.html#process-based-permissions

専用スレッドで実行されるカスタムESMローダーフックの追加

多分ESMを別スレッドで読み込むことでヒープ競合が起きなくなるのだと思うが、使ったことがないので詳細は不明。TypeScriptを使っている限り、まだまだCJSを使う機会が多く、ESMへの完全移行は先な気がするので放置で良さそう?誰か詳しい人教えて!

同期的になったimport.meta.resolve()

詳細不明なのでパス。以下の記事が参考になるかも?

https://sosukesuzuki.dev/posts/nodejs-import-meta-resolve/

V8エンジンのアップデート

Chromium 113の一部であるバージョン11.3に更新されたそうです。前回は 11.2 だったようですが、いつのバージョンに入ってたのかは未確認。

テストランナーが安定版になった

Test runnerがStableになり本番環境で使えるレベルとなった。Jestより貧弱な気しかしないが一度は試してみたいところです。

https://nodejs.org/api/test.html

Ada 2.0の導入

URI解析のパフォーマンスが向上したほか、URLホスト名解析が楽になったっぽい?

単一実行バイナリの生成に対応

実験的な機能ですが単一実行バイナリの生成がサポートされた。リリースノートを読む限りNode.jsランタイムをバンドルすることで実現してそうなので、Electronみたいに巨大なバイナリができそうな気がする。興味深いので是非試してみたい機能。

https://nodejs.org/api/single-executable-applications.html

Web暗号化APIの互換性向上

恐らく主要なブラウザに実装されているWebCrypt実装を模倣したものが追加された?

https://github.com/nodejs/node/pull/46067

ARM64版Windowsのサポート

Node.jsの全機能がARM64版Windowsで動作するようになったとのこと。Surface Pro Xとかでも動くようになるものと思われる。単一実行バイナリの作成と合わせて嬉しい機能です。

WebAssembly System Interfaceインスタンス作成時にバージョン指定を必須に

new WASI()でバージョン指定が必須になりました。

https://nodejs.org/api/wasi.html
https://github.com/nodejs/node/pull/47391

url.parse()に無効なポート番号を持つURLを渡すと警告を出すように

次のようなURLを渡すと実行時に警告が出るようになりました。

url.parse('https://evil.com:.example.com');
url.parse('git+ssh://git@github.com:npm/npm');

https://github.com/nodejs/node/pull/45526

LTSスケジュール

20系がLTSに入るのは2023-10-24からです。

https://github.com/nodejs/release#release-schedule

ブートドライブの交換をする時に色々やったので、その記録です。メインはM2SSDの固着ネジの取りはずしです。

内容としてはCrucial P1 CT500P1SSD8JPSolidigm P44 Pro SSDPFKKW020X7X1に更新しました。

Solidigm P44 Pro SSDPFKKW020X7X1

既存SSDの抜去

交換するために既存のSSDを取り外す必要があったのですが、まずここでハマりました。何故かというと、ネジが固着してて回らないんですね…。そしてネジ穴が潰れて終わりました。しかし外せないと困るのでいくつか試してみました。

まずはネジすべり止め液。これを使えばネジ穴が潰れていてもたちまちネジが回るのだとか!

先端部が細くなっていて、ネジ穴だけに上手く差せそうですが実際はM2SSDのネジだと溢れました。ザラザラしてて取り除くのがやや面倒なのでマザボにはこぼさないほうがいいと思います。サラサラしてて割とドバッと出ます。

300円でネジが抜けるなら安いものだと思って買ったネジすべり止め液
液が出る先端部

ネジすべり止め液を差してみたところ。SSDの基板に掛かっていますがとりあえず無事でした。結局これは効果がなく、次の手を探ることに…。

期待も虚しく効果なし

そこで見かけたのが、なめたネジはずし精密用 なめたネジはずし精密用ハンドル付M1~2.6 No.3610-N)。これなら基板にダメージを与えずにネジを取り去れそうですが、近くに売っているところがなく断念しました。

次に浮かんだのがネジを外す道具として定評のあるネジザウルスです。ネジを掴んで回すのでネジ穴が潰れてても原理上問題ありません。ただ、背の低いM2SSDのネジを掴めるのかと、回してる時に基板をこすって壊さないかが心配でしたが、外せないとどうしようもないですし、試してみないことには解らないということもあり、一か八かの掛けで試してみることにしました。幸いこいつはヨドバシにあったのでその日のうちに買いに行きました。(翌日まで待つとかできない!

神戸に住んでるので頑張って梅田まで出張って買ってきました。(しかし、この後買い忘れに気づきもう一回行くハメに…

神戸から梅田までは30分くらいです

という訳でネジザウルスを買ってきました。

期待のネジザウルス、きっとこれなら外れてくれるはず

結果としてはM2SSDのネジの頭を掴むことができ、特に基板にダメージも与えずネジを外すことができたので良かったです。

外れた!
これでM2SSDを交換できる…。長い旅だった…。

ブートドライブのクローン

今使ってるマザボはM2SSDスロットが2つあり、片方がブートドライブになっているため、ドライブをクローンして新しいドライブをブートドライブとして使えるようにしていきます。残念ながらフリーのクローンソフトにめぼしいのがなかったのとDDコマンドを使ってまでやる気が出なかったので、かつてお世話になったAcronis True Imageの後継ソフトであるAcronis Cyber Protect Homeを頼ることにしました。

手順は簡単でツール → ディスクのクローンの作成を選び、表示されるウィザードに沿って進めるだけです。

クローンメニューはバックアップでなくツールの方にある

日本語が怪しくてやや分かりづらいですが一番上のやつで行けました。

翻訳がイマイチで日本語が分かりづらい…

NVMeSSDからNVMeSSDへのクローンだったので体感30秒くらいで終わりました。

NVMe SSDからNVMe SDDへのクローンは爆速でした

この後は新M2SSD抜去 → 元々差していたM2SSDを挿入 → 元々のブートM2SSDを抜去 → 新M2SSDに置換という手順で更新を完了しました。M2SSDの交換はPCケースを倒した状態でグラボも外してないと出来ないので、クローン作業との兼ね合いで結構面倒でした…。もう当分やりたくない作業です。

何はともあれブートドライブの容量を500GBから2TBに拡張できたのは良かったです。先日グラボを更新したのもあり、新鮮な気分です。

投稿日:
自作PC::グラボ

久々にPC構成を更新したので開封の儀的なやつです。前回のグラボ更新が2019/06/11だったので、およそ4年ぶりの更新です。更新理由はStable DiffusionなどのAIツールをローカルで使うためです。

更新内容

グラボ
交換前 ROG-STRIX-RTX2060-O6G-GAMING
交換後 ZOTAC GAMING GeForce RTX 4070 Ti Trinity OC

グラボ開封の儀

以前はROG-STRIX-RTX2060-O6G-GAMINGを使っていたのですが、ROGは高いので今回は断念しました。低価格帯ではZOTACが馴染み深いのと、一番見た目が好みだったのでZOTAC GAMING GeForce RTX 4070 Ti Trinity OCを購入しました。

外箱。マザボの箱よりでかい気がします。

外箱

外箱を開けると内箱が出てきます。

内箱

内箱を開けるとセットアップCD。今どきのゲーミングPCで光学ドライブベイが付いてるのどれほどあるんですかね?ちなみにウチはないです(外付けは持ってますが)

セットアップCD

内箱の中身。本体と付属品がついています。よほど手荒くしても壊れそうにない梱包が力強いですね。

本体と付属品

付属品その1、サポートステイ。ケースの中に立てて支える感じのものです。接地部やグラボとの接触面にはゴムパッドがついており、振動や滑りを抑える構造になっています。高いだけあって、こういったグッズがついているのはありがたいですね。

サポートステイを立てた状態
サポートステイの正面、ネジで高さが調整できる

付属品その2、電源ケーブル。PCIe電源3本を一本にまとめて12VHPWRに変換するやつです。流石にこれはついていて欲しかったので大分助かりました。

12VHPWR変換ケーブル

という訳で特に他に部品を買わずともすぐに使える最低限のパーツ一式が付いていて助かりました。

旧グラボとの比較

ROG-STRIX-RTX2060-O6G-GAMINGとの比較です。

サイズ感としては若干大きいくらいで余り変わりませんでした。

上が4070 Ti、下がRTX2060

厚みもやや厚いくらい。

奥が4070 Ti、手前がRTX2060

重量はやや軽い。今までサポートステイ無しで使ってきて何もなかったので、今回もいらないかなと思いました。

4070 Tiの重量、1,131g
RTX2060の重量、1,289g

ベンチスコアも上がってますが、価格の割には上げ幅は少ないというか4Kとかではないのでこんなもんかなという感じです。

4070 Ti暁月ベンチ 22,127
RTX2060漆黒ベンチ 15,702

また今度Stable Diffusionのベンチマークも取ってColabとの差がどれほど出るか記事にしてみたいと思います。

交換時のトラブルとか

何事もなく交換ができたら良かったのですが、まぁそんなことはなく…。

起きたトラブルとしてはグラボからDPケーブルで2枚のモニタに繋いでいるのですが片方が映らなくなりました。原因は単純でASUSのグラボチューニングユーティリティGPU Tweakのせいでした。こいつをアンインストールしたら映るようになりました。

またフルプラグイン式の電源(Seasonic SSR-750FX)を使っているのですが、これはPCIeケーブルがポート分付属しておらず、純正品の販売もなかったのでアリエクでそれっぽいのを買って使っています。今のところは特に問題なく動いています。(まぁ通電するポジションさえあってれば基本は大丈夫でしょう…)

あとはPCIe電源を12VHPWRに繋ぐ時に2股の先を両方使っているのですが、これも今のところは問題ない感じです。まぁ使えるから二股になっているはずなので、行けるんじゃないかなと信じています。(ケーブルが耐えられるように作られてるなら燃えたりすることはないはずですし…)

2023-05-04現在、無料枠では利用できない可能性があります。

Google ColaboratoryでStable Diffusionを動かす場合、無料と有料でどの程度変わるのか試してみたのでその結果。ざっくり4倍ほど変わるのかなというのが体感です。

レンダリング条件

今回は以下の設定で回した結果を比較します。

WebUIの設定スクショ

ベースとなるNotebookは以下を使っています。

https://gist.github.com/Lycolia/cb432ad1b1ce083482b5487c131b5d12/80a059931c538b10d55cf9fcbf82220f24e64653

設定値は以下です。ほぼデフォです。

設定
Propmpt (illustration:1.0), masterpiece, best quality, 1girl, solo, happy, smile, theater, (perspective:1.3), from below, (looking away:1.2), (from side:1.0), {{shot_hair}}, smile, bangs, shaggy, (brown hair:1.1), swept_bangs, thick_eyebrows, skin_fang, closed mouth, {{purple eyes}}, gray {{jacket}}, white shirt, glasses, {{small breasts}},
Negative Prompt nsfw, (worst quality, low quality:1.4), (depth of field, blurry, bokeh:1.5), (greyscale, monochrome:1.0), multiple views, text, title, logo, signature, (tooth, lip, nose, 3d, realistic:1.0), dutch angle,(cropped:1.4), text, title, signature, logo, (loli:1.2), school satchel, pink, school bag, school uniform, from behind
Model AOM3A1B
VAE orangemix.vae.pt
Sampleing method Euler a
Sampleing steps 20
Width 512px
Height 512px
Batch count 1
Batch size 1
CFG Scale 7
Seed -1

比較結果

レンダリング時間はTotal progressの時間を書いてます。

\ Colab無料枠 Colab Pro
GPUクラス 標準 プレミアム
メモリ 標準 ハイメモリ
GPU Tesla T4 A100
システムRAM 12.7 GB 83.5 GB
GPU RAM 15.0 GB 40.0GB
ディスク 166.8 GB 166.8 GB
レンダリング時間 8秒 2秒

セットアップ時間はどちらも5分ほど。

スペック情報参考

無料枠

Golab Proで標準GPUにしても同じです。

Tue Apr 11 12:50:30 2023
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 525.85.12    Driver Version: 525.85.12    CUDA Version: 12.0     |
|-------------------------------+----------------------+----------------------+
| 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  Tesla T4            Off  | 00000000:00:04.0 Off |                    0 |
| N/A   70C    P8    33W /  70W |      0MiB / 15360MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+
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
              total        used        free      shared  buff/cache   available
Mem:           12Gi       628Mi       7.4Gi       5.0Mi       4.6Gi        11Gi
Swap:            0B          0B          0B

Colab Pro

Pay As You Goで有料枠買ってもGPUは同じです。

Tue Apr 11 12:55:03 2023
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 525.85.12    Driver Version: 525.85.12    CUDA Version: 12.0     |
|-------------------------------+----------------------+----------------------+
| 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...  Off  | 00000000:00:04.0 Off |                    0 |
| N/A   39C    P0    46W / 400W |      0MiB / 40960MiB |      0%      Default |
|                               |                      |             Disabled |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+
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
              total        used        free      shared  buff/cache   available
Mem:           83Gi       756Mi        79Gi       1.0Mi       3.3Gi        82Gi
Swap:            0B          0B          0B

おまけの成果物

そこそこちゃんとした絵は頑張ってプロンプト練ったり、ひたすら回したり、i2iを繰り返したりしないと、やっぱ出てこないですね。まぁモデルによっては楽に出せたりしますが、権利関係が怪しかったりするのでここには出せないです…w

あとがき

時間帯によってUIが異様に重くなることがあり、GPUの処理速度も時間帯によっては1秒未満で終わることがあった気もするので、この不安定さはクラウドユースの欠点だなぁと思いました。とは言え、GPUを買うことに比べれば手軽に利用できるのは、やはりメリットかなと思います。

よく使う人はグラボ買ったほうがストレスとかから開放される可能性はあるかもしれません。私はRTX2060なのでどう転んでもColabの方がマシなのが悲しいところ…。4070Ti買うか地味に迷いますね。