Stable Diffusionの学習のためにiGPUとdGPUを併用する話
マザーボードとCPUを換装して、iGPU(統合GPU)が使えるようになったので記念にiGPUとdGPU(専用GPU)の共存させてみたら上手く行ったのでメモ
環境
CPU: i9 13900K
GPU: RTX4090
やる理由
Stable Diffusion自体にメリットはほとんど無い。あるかもしれないが自分には無さそうだった。何に効果があるかと言うとLoRA等の学習
学習はGPUをほぼフルに使うため、学習中に動画を再生したりするとGPUがそっちに回されて大きく速度が落ちることがよくあった。仕方なくブラウザはハードウェア支援を使わないようにしたりするが、そうするとCPUが無駄に使われるしブラウザ自体も気持ち重くなる
学習のバッチサイズを下げたりすればいいのかもしれないが、せっかくなのでフルに使いたい。というわけで普段のブラウザなどの軽い処理はCPUのiGPUに回して、重いものだけdGPUに回すようにした
やり方
・使っているディスプレイの数だけ映像出力のあるマザーボードとiGPUのあるCPUを購入し、映像出力をマザーボード側の出力に繋ぐ。dGPU側の端子に繋いでも映像は出るが、iGPUで描画したものをdGPUに送って出力することになるので常にdGPUに無駄な負荷が掛かる。あと映像が微妙にカクついたりした
・マザーボードでiGPUを有効化する(iGPU Multi monitorなどの設定があるマザーもある)
・Windows10でディスプレイ設定→グラフィックの設定で省電力にしたいアプリを追加して、オプションから省電力を選ぶ。同様にdGPUで処理したいアプリは高パフォーマンスを選ぶ。正しく設定されていれば省電力の方にはiGPUが表示されている
注意点
・マザーボードは映像の規格に注意する。よく調べずに買ったら、格安でもないのに4kで30Hzしか出ないHDMI1.4が採用されているマザーに当たって泣いた
・同様の理由だが、4kで144Hzのモニターを使ったりしていると恐らく大半のマザーでは対応していないので60Hz以下になる
以上で終わり。処理がどちらに回っているかはHWMonitorをインストールしてiGPUとdGPUの使用率や消費電力を見れば分かる。dGPU側の映像端子に接続していた時は動画を再生している時にdGPUに負荷が少し掛かっていたが、マザーボード側に接続し直したら完全にアイドルになった
ゲームは最近PCでしていないのでどれくらい快適に動作するか不明。dGPUからマザーボードに映像を送らないといけないのでカクついたりする可能性もあるかもしれない?
ふるさと納税で良かったもの2023
・シャインマスカット&ナガノパープル
定番のシャインマスカットだが、ナガノパープルも負けず劣らず美味しい。
1万円くらいで1房ずつもらえるものもあるのだが、今年は外れっぽい物が来てしまい不満が残ったので1房ずつで2万円のものを追加で頼んだ。
よく考えれば返礼品はだいたい寄附額の30%なわけだから、1万円だとおよそ1房1500円ずつになってしまう。一般的にグレードの高いシャインマスカットやナガノパープルは1房3000円前後が多いので、そういうのが欲しければ1房1万円寄付の物を頼む必要が出てくる
実際、この1房1万円寄付のシャインマスカットとナガノパープルはどちらも美味しく満足した。
とはいえ、2房1万円寄付くらいの物でも美味しい物が来ることは普通にある
・焼菓子
色々入っていてめちゃくちゃおいしいのに寄附金額も低い。この店行ってみたいけど熊本か・・・
・鮭の冷凍刺身
同じ値段でも柵でもっと量が多いものはあるが、自分が頼んだ時は臭みが強かったのと食べる分だけ切るのが果てしなく面倒だった。こちらは量は少ないが切った状態で小分けにされているので便利。臭みも少なかった
・うなぎ
うなぎはずっとかわすいの物を頼んでいる。解凍してオーブンで焼くだけでかなりの味が出る
他の物も試そうかと思ったりするが、うなぎは泥臭かったりするリスクが大きいのであまり挑戦する気が起きない
・牛タン
値段に対して量が少ないが、柔らかい部分だけを選んでいるらしく固い物に当たらない
他の所で頼んだ際は包丁をびっしり入れてあるのに噛み切れない部分がある物が来て地獄を見た。
・マンゴー
2玉で13000円寄付の物で95点くらいの物が来た。安い物とはあまりに香りと味が別格すぎる
2玉30000円寄付の太陽のタマゴというマンゴーももらったのだが、2玉で13000円寄付のマンゴーの点数が高すぎて95点と97点の勝負みたいになってしまった。確かにより美味しくなっているが、値段ほどの差は感じられなかった
・ティッシュ
お得感は無いけど、買い忘れてティッシュが切れるということがなくなった。ただし収納が空いてないと邪魔になる。
・冷凍庫
ふるさと納税で一気に冷凍食品が来ると困るのと、冷凍食品を買いだめしたかったので頼んだ。電気代もまあまあするけど満足
ただし家財便なのに発送元の自治体は日時指定させてくれたりはしないので、いつ来るか分からない最初の配達を逃すと配達の人に迷惑がかかる。自分は在宅勤務なのですんなり受け取れた
ふるさと納税の枠が余っているとかでもなければ普通に買った方がいい気がする
全体的に、ふるさと納税は量より質を選んだ方が満足度は高いという印象を再確認した
ソフトウェアエンジニア10年間の給料
10年くらいソフトウェアエンジニアとして働いたのでメモがてら給料の推移を書いた
数字はだいたいです
書いた人について
大学院卒、OSS活動無し
外資系勤務
英語は外資系で生きていけるくらいには喋れる
1年目 700万
新卒で入社して基本給が年700万だった
例年ならボーナスもちょっとはもらえるはずがこの年は景気が悪くてゼロでなかなかつらかった
2年目 707万
1%給料が上がった。ボーナスは無い
3年目 710万
ボーナス3万円くらいもらえた気がする
この頃になると会社の業績がひどくなり、昇進も昇給も厳しくなってきたのでさすがに転職先を探し始める
4年目 1100万
知らない会社をエージェントから勧められてコーディング面接の練習になるかなと思って受けたら中々面白い会社で、給料も良かったのでそのまま転職。入ってみたら仕事内容も環境も前より段違いにいい会社だった
ちなみに転職後半年くらいで前の会社のチームは全員クビになった
5年目 1400万
昇進した。前の会社より技術レベルが高くて生きていけるか不安だったが特に問題なかった
6年目 1800万
景気が良い頃だったからRSU(自社株)が予想していたより多くなり年収が増えた
7年目 2000万
更にRSUもらった
8年目 1800万
2社目で結構長く働いたので外の世界を見たくて転職したので下がった。この辺りになってくると税率も高いのでちょっと下がるくらいなら別にいいかなという感じで転職
9年目 2200万
昇進した
10年目 2700万
昇給した
今後
今年は年間3000万ちょっとでここから先は頭打ちの雰囲気
なんとなく年3000万前後が東京の普通のソフトウェアエンジニアとしての限界かなと感じる。5000万以上とかを目指すにはマネジメントで上の方に行ったり技術を極めたりする必要があるが、そうするには今の自分の場合仕事に割く時間を増やしたりしないといけなくなるので考えもの。後はリスクを取ってスタートアップに行くとかもあるが言うまでもなく大変だ
とはいえ、キャリア数年の頃は3000万とか稼げる未来が見えていたわけでもないのでまたこれも変わるものなのかもしれない
年収を上げるためにしたこと
一番効いたのは英語を学んで外資系に就職する事。外資系の方が概して高給である事、英語で働ける環境に身を置けば英語の能力を伸ばし維持する事ができる事、労働環境が良い傾向にある事などから英語を勉強して新卒から外資系に入った
英語は読み書きはともかくスピーキングの経験がほぼゼロだったが、オンライン英会話を使えば1ヶ月1万前後で1日50分話せるのでそれを半年から1年続けて新卒の面接に通るくらいの英語にはなった。強制力が全く無いので気力が無いと続かないが、やる気があるなら高額な対面の英会話にお金を払ったりしなくてもなんとかなる。とはいえ、ネイティブ同士のカジュアルな会話なんかは聞き取るのもつらかったりするし自分の意見を上手く伝えられないというようなストレスは普通にある
その後は昇進をしたり他の外資系へ転職して給料アップしていった。面接の時も英語の練習をしたりする必要はあまりないので他のコーディング面接等に注力できるし、外資系への転職での心理的ハードルが低いというのもある
次に効いたのはソフトウェアエンジニアバブルの波に乗ったこと。ITが重要になることは明白だったが、日本のソフトウェアエンジニアの給料がここまで高くなるとは専攻を決めた段階では思っていなかったのでまあ運の要素が強い。これからAIでコーディングも簡略化されていくだろうからこの波がいつまで続くか分からないからもしかしたら短い波を捉えただけだったのかもしれない
最後に効いたのは最初の転職でいい会社に入ったこと。まああそこで面接に落ちていても似たような会社に入っていた気はするが、とはいえ良い環境でスキルセットを伸ばせたのは大きかった
今は新卒1年目から1000万超えもあるので、同じような道を今から辿ったらもっと稼ぎやすくなってるはず
特に名が通ったソフトウェアエンジニアでなくてもある程度の努力と運でこれくらい稼げるのはいい時代になったね
リモート時代のZoomマイクとヘッドフォン
完全リモートワークが始まって2年ほどになる。
リモート会議向けのマイク・ヘッドフォンがだいたい固まったのでここに書いておく
結論としてはAirpods Pro + Samson Q2Uの構成になった。
前提
・仕事で使っているMacやLinux向けの構成。自分のPCならRTX Voiceというノイズキャンセルソフトが使えるが、Macでは使えないので諦める
・数時間連続で会議に参加しても平気なものを選ぶ
・マイクの音質重視。会社では常時英語で話しているが、自分の発音はあまり良くないので少しでも聞き取って貰える確率を上げるためにマイクの音質を上げる。複数人のリモート会議では相手の声が途切れたり聞こえにくかった場合、回線のせいで自分だけ聞こえないのかそもそもの音質が悪かったのか分からず聞き返しにくい。聞き取れる場合でも音質の悪い声を聞き続けるのは疲れるというのもある。
初期
最初はリモートが始まる前から持っていたオーディオテクニカのATH-770COMを使っていた。
これはマイクの音質がそこそこで、音量リモコンも使いやすいので半年くらいはこれを使っていた。しかし1時間使う程度ならいいのだが、長時間これを着けたままにすると頭が痛くなってくるという問題があった。また有線なので少し机を離れたりするのがやりにくい。
Airpods Pro
Airpos Proは持っていたので試してみたが、イヤホンの方はいいのだがマイクがいかんせん音質が厳しい。圧縮されたようなのっぺらとした音になる。
また、MacでAirpods Proをマイクに指定するとBluetoothのコーデックが通話用のSCOに変わるようで、イヤホンの音質もラジオくらいのひどい音になる。別のマイクを入力に指定するとAACになってまともな音になる。
稀に電話に使う程度なら別にこれでもいいのだが、日常的に使う用途としては選外
骨伝導ヘッドフォン
イヤホンは長時間使うと外耳炎になったりするリスクがある一方、ヘッドフォンは頭が痛くなるので骨伝導も試してみた。AfterShokz Aeropexという当時一番高い物を買ったが、骨伝導は頭にフィットさせるために音が出る部分がある程度の力で締め付けるようになっている。これを数時間着けていると頭が痛くなってくるので残念ながらこれは諦めた。対照的にAirpods Proは着けているのを忘れるくらい装着感が良い
Airpods Pro + 単体マイク
マイク音質を求めれば、高いヘッドセットか単体のマイクを買うしかない。ということでWave 1というコンデンサマイクを買った。
USBマイクは配信用のBlue Yetiやそれの類似品がいくつもあるが、指向性を変えられるなんて機能は必要ないし、使いもしない機能のために4つもマイクを内蔵している製品を買うのなんだかなと思ったので単一指向性で海外でのレビューも良かったこれを選んだ。
配信用マイクで比較的ハイエンドな製品だけあって音質は素晴らしく、声が段違いに明瞭になった。
が、コンデンサマイクは非常に感度が高い。外の騒音はもちろん、エアコンや加湿器の音をガンガン拾うのでZoomのノイズキャンセルでは消えない環境音が結構入ってしまう。
このためにKrispというノイズキャンセルソフトを入れた。Krispのノイズキャンセルを使えば環境音はほぼ消える(残念ながら音質も少し下がるがまあ許容できる)。
これで一件落着かと思いきや、Krispはサブスクリプションサービスなので月額5-8ドルくらい掛かる。仕事で使っているので経費にしたいが、社内で他に誰も使っていないしサブスクリプションを経費にするのは面倒なので、別の方法としてダイナミックマイクを検討した。
環境音を拾いやすいコンデンサマイクと違い、ダイナミックマイクは環境音を拾いにくい。だったら最初からダイナミックマイクでいいだろうと思うかもしれないが、ダイナミックマイクは歌手が使うようなマイクで口元にマイクを近づけなければ良い音質にならない。
ビデオ会議でダイナミックマイクが画面に映っているのは異様な雰囲気を感じないこともないので、口元から少し離しても大丈夫なコンデンサマイクを最初に試したのだった。
しかし実際にコンデンサマイクの配置を色々試していると、口元にかなりマイクを近づけても画面に映らないように配置できることに気づいた。
自分は外付けディスプレイの上にWebカメラを置いているが、こうすると画角的に自分の胸の少し前の空間に何かあってもカメラには映らない。なのでそのあたりにマイクを置くと、それなりに口元に近くかつカメラに映らないという配置ができる。
ということでダイナミックマイクを使うことにした。買ったのはSAMSON(米国のメーカーらしい)のQ2Uというマイク。Rebuild.fmでも紹介されているマイクで、ポッドキャストなど向けのマイクとして定評がある。
音質的にはコンデンサマイクのWave 1の方が明瞭な音だが、ZoomにはQ2Uでもいいかなという感じ。プレゼン等をするならエアコン等の環境音を消してWave 1を使うかもしれない
これをグースネックのマイクスタンドに装着する。机の脇に取り付けて、使うときに自分の方に曲げてマイクを口元に向ける。簡単に曲げられる割にそこそこしっかりしている。週末など使わない時は曲がる部分だけ外すこともできる。
マイクアームも考えたが、こちらの方が配置の柔軟性がありそうだった。
コンデンサマイクもこれに取り付けられる。
この構成にしたことで音質は満足行くものになり、ヘッドセットからも開放された。話さない時なら机の前を離れられるし、やろうと思えば一時的にAirpods Proのマイクに切り替えることもできる。
ここまでやる必要があるのか?とは思わなくもないが、リモートワークになってから同僚が自分の声を聞く手段はマイク越しにしかないのでこれくらいの投資は費用に見合うと思う。もし既にAirpods Proを持っているなら1万ちょっとしか掛からない。
Deep Learningでラブライブ!キャラを識別する
このところDeep Learningが相当流行っているようで、ほとんど至るところで話題になっているのを見ます。
Deep Learningは深層学習とも呼ばれ、ニューラルネットワークの層をこれまでより深くして機械学習を行う技法です(だそうです)。
画像認識コンテストで他の方法と比べて非常に高い精度を示しており、以前は人の手で行っていた特徴の抽出まで行えます。
以前であれば車を認識するには車はどのような特徴を持っているかを人がモデル化して入力していたわけですが、この特徴を入力画像と与えられたラベルからニューラルネットワークが捉えてくれます。詳しいことはDeep Learningで検索して出てくる記事やスライドを参照のこと。
Deep Learning自体は容易に実装可能なものではなさそうですが、多くの研究グループがDeep Learningを行うためのソフトウェアをオープンソースにしているため、気軽に試せるようになっています。
先日開催された87でSIG2DというサークルがDeep Learningの入門記事を載せた本*1を頒布しており、それを読んでなんとなくやる気になったのでその記事をなぞって自分でも画像分類器を作ってみました。
題材はラブライブ!のキャラクターです。与えられた画像に対し、どのμ'sのメンバーが画像の中にいるかをそこそこの精度で判定するのが目標です。また、他のアニメのキャラをμ'sと判別しないようにします(髪の色だけで判定したりはできない)。
完成品はこんな感じです
*1:Hazuki, Tachibana., Kotori, Otonashi., Yuuma, Kanoue., and Asuna. Proceedings of the 3rd Interdimensional Conference on 2D Information Processing. SIG2D'14
スポーツの強さと競技人口の相関
ほとんどの競技で、国際試合となると国ごとにはっきりした優劣が現れる事が多い。この差を説明するのによく言われるのが競技人口の違いで、選手の数が増えるほどトップ層の強さも上がるという直感的な考えだ。
世界一を決めるという話になると問題になるのはその国のトップ数十人の能力だけであって、その国の平均的な選手がどれくらい上手いかはあまり影響しないだろう。だから競技人口を増やすのは、実施するのが簡単ではない事を除けば良い考えに聞こえる。
この考えは正しそうだとずっと思っていたが、よく考えれば裏付ける証拠を見た事がなかったので少し調べてみた。
身体的な能力が入ると要因が増えて面倒なので、頭脳だけで決まるチェスについての結果で以下の様な図が見つかった。
Toward a General Theory of Expertise: Prospects and Limits. K. Anders Ericsson and Jacqui Smith
グラフは国ごとのチェスプレイヤーの数と、タイトル保有者の数を表わしている。競技者数に比例してタイトル保有者も増えており、相関係数は0.82であるそうだ。
拍子抜けするほど期待通りの結果だが、競技人口が国のスポーツの強さの大部分を占めると考えて問題ないだろう。身体的な能力が影響するスポーツだと相関は弱くなるだろうが、似たような遺伝子を持つ国同士が戦った場合、やはり競技人口が大きな影響を及ぼすと言えそうだ。