サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
掃除・片付け
qiita.com/syoyo
背景 CUDA 開発環境とか入れるのめんどい PC 環境変えたら毎回開発環境入れるのめんどい 自前アプリを CI ビルドするときとか最小限の構成にしたい. clang から CUDA コードから直接 PTX(as) 吐きたい なるべく素の機能を使って, C コードと共存したいとか, あとで OpenCL C に移行しやすくしたいとか. NVRTC(JIT compile) のテストとしてオフラインコンパイルを確認したいとか Clang CUDA モード? 最近の nvcc(clang/LLVM ベース)は, その通り基本 clang/LLVM のコードを使っている(clang/LLVM に対応コードがコミットされている)ので, clang/LLVM では CUDA 対応(CUDA 構文パースや PTX コード生成)が施されています. C++ STL も多少は利用できるようです. CUDA
背景 Ubuntu + gnome-terminal + vim がお気に入りだけど, WSL 経由の gnome-terminal は挙動が不安定でつらい... とりあえず Windows Terminal でやりきる 😾 ctrl + v そのままでは普通のペーストになります. CTRL + , で config.json 設定開き, ctrl + v のコマンド部分を消します. ほかのサイトでは null 指定していますが, どうも 2022/06 時点の Windows Terminal だとだめっぽいようです. フォント デフォルトの Cascadia Code だと, C/C++ のコードで != が一文字になったり, // のスペーシングがおかしくなったりします. なれればいいのかもしれませんが, monospace に慣れている場合は Cascadia Mono あたりに
背景 CMake でターゲット(e.g. .exe, .so)がビルドできたらカスタムコマンドを実行したい. 実行できるかの確認, 簡単なテスト, .so の依存関係チェックなど (add_test として実行するには適さないような処理) 方法 add_custom_command + POST_BUILD でいけました. (add_custom_target ではないので注意) 注意点 add_custom_command の TARGET はカレントの CMake で定義したものでないとダメとあります. 関数でターゲットを処理するようなもの, たとえば pybind11 でモジュール定義(pybind11_add_module) とは組み合わせることができました. pybind11_add_module(mytarget sources.cc) # OK add_custom_comm
Visual Studio C++ Build Tools のライセンスが更新されて商用利用でも VS ライセンスなしに OSS のコンパイルに使えるようになりましたVisualStudioeula 背景 もともとは C++ Built Tools(MSVC の CLI tool 群や MSVC header, library など)は, Visual Studio のライセンスがないと使えませんでした. いつの間にかライセンス term が更新され OSS ライブラリのビルド(たとえば MFC とかに依存していたりでどうしても MSVC が必要なケースとか)には利用 OK と緩和されてました. 自社の proprietary C++ project が, MSVC 必須ではないが, Third party OSS ライブラリがどうしても MSVC でないとビルドできない場合, C++ B
基本は手順に沿えばいけます. ただ, ネット回線速くないとだめでした(validator になって validator 報酬もらう場合. 100 Mbps ~ 1 gbps は必要そう). devnet(開発用), testnet(mainnet 運用の前のテスト用) での接続例は にあります. testnet の場合, genesis hash や known validators を指定しないとうまくいかないっぽいようです. 運用編はこちら: Solana testnet validator を運用するメモ https://qiita.com/syoyo/items/359a5f7b7c81683e2acf Solana validator 情報 validator = geth でいう full node + voting による PoS という感じでしょうか. Solana では
背景 streamlit のアプリを .exe にしてぺろっと配布できるようにしたい... pyinstaller を使い, .py から steramlit run を動かすという形で対応します. 手順 ありがとうございます. 基本はこれを周到すればよいです. 以下は差分的な感じです. 2022 年 11 月時点で, streamlit.web.cli がすでに用意されているので, site-packages のほうに cli.py を作る必要がなくなりました. にあるようにエントリとなる .py はこんな感じになります. import streamlit.web.cli as stcli import sys def streamlit_run(): sys.argv=["streamlit", "run", "main.py", "--global.developmentMode=f
ProRAW が iOS 14.3 から対応されました. 自前ツールで読めるようにしたいですね. とりあえず読めました. Semantic map layer もいけました. ProRAW とは? Halide Camera(ちなみに Camera image processing を高速化したりなどの Halide lang https://halide-lang.org/ とは別. 紛らわしいですね)による解説があります. Understanding ProRAW https://blog.halide.cam/understanding-proraw-4eed556d4c54 ありがとうございます. フォーマットは他の RAW と同じく DNG(TIFF) です. ProRAW(DNG)とありますが, 他の DNG(通常 1 channel の mosaiced 画像)とは異なり,
背景 何やら流行りの LangChain でいい感じに日本語扱いたい! とりあえずローカルで動かしたいので, 日本語は gpt-neox-japanese-2.7b 使います. LangChain 自体はなんかいろいろつなげるための wrapper みたいなものです. (そのうち huggingface もなんか langchain っぽいの出してきそうですネ) LLM module huggingface pipeline 使います. gpt-neox-japanese-2.7b デフォルトだと CPU 実行になってしまうので(CPU でも動くが数分くらいかかる), GPU 処理, また fp16 を使います! また, langchain の(?) デフォルトの max_new_tokens は 20 tokens で, 長い input 与える(下のずんだもんは 220 tokens
ChatGPT(GPT-3.5?) しゅごいよねぇ... ローカルで(GPU で)似たようなの動かしたい... 追記: 2023/06 時点ですと 8bit 量子化が成熟してきていてで 3090 x 1 で問題なく動きました. また日本語ですと rinna 3.6B がいい感じでした. https://zenn.dev/syoyo/articles/946c17666e10fb LangChain + GPT-NEOX-Japanese-2.7b で日本語 LLM やりとり整備するメモ https://qiita.com/syoyo/items/d0fb68d5fe1127276e2a GPT-NEOX-Japanese-2.7b 試したけどなんか微妙だったネ... とりま LLM では大きさは正義と思いますので, gpt-neox-20b 試します. https://www.infoq.
Whisper large と同精度とあります. v1.1 から長時間音声対応 + 認識精度よりよくなりました! $ reazonspeech input.mp3 でかんたん認識できるようになりました! 恋する女子のときめきゅんあるあるテスト音声で試します! {"start_seconds": 0.48, "end_seconds": 11.319, "text": "恋する女子のときめきゅんあるあるこっちかなこっちかなもう違う"} ... {"start_seconds": 426.522, "end_seconds": 430.454, "text": "男性の方々にも女性が待ち合わせの前に"} {"start_seconds": 430.454, "end_seconds": 437.313, "text": "入念に準備をしているところだったりとかあとデート中は実はすごくドキドキし
ふええ... ChatGPT すごいねぇ... しかしモデルとかは公開されていないね... 自前でも動かしたい... GPT3-J がありました! 環境 Ubuntu 20.04 + conda 3090 CPU memory 128GB 情報 GPT-JをWindows11のGPU環境で動かしてみた https://qiita.com/kekekekenta/items/8ff65475b19f8c924d97 ありがとうございます. 今回は huggingface transformers で Linux + pytorch + 3090 でぺろっとやります. そのままではモデルが 24 GB あります. CPU メモリで読むのに 48 GB 以上必要です. 3090 + 64GB or 128 GB CPU メモリでなんとか扱える感じでしょうか. fp16 版など使えば CPU も
Whisper で音声認識 + 単語(word)単位でのアラインメント(単語がどの時刻に出てくるか)までやってくれます! 音声のアラインメントについてのメモ https://qiita.com/syoyo/items/e43d9d5d564fded3a2b6 インストールは特に難しいものではありません. 中身的には Whisper + word2vec の wrapper という感じでしょうか. README.md には書かれていないのですが, 日本語対応がされています. (単語単位でアラインメントしてくれます) https://github.com/m-bain/whisperX/pull/8 https://github.com/m-bain/whisperX/blob/main/EXAMPLES.md --language ja 指定すると wav2vec にjonatasgrosm
vscode で C++, Python コードを vim っぽく tab 補完するメモ(文字列は補完できないっぽ?) 背景 vim で tab 補完ばりばり使っている... でも C++, Python の補完(ale + lsp)が vim だとちょい機能不足なので, vscode 使いたい... vscode tab 補完どうやるの...? vscode 1.74 or later を仮定します. 設定 settings で tabCompletion で検索して on にします! (json 直編集どうやるんじゃろかね) 文字列とかも補完したいが lsp 次第っぽ? 連想配列で key が文字列の場合に文字列補完できると便利です. vim (の ale?) だと文字列も tab で補完できます. vscode だとできません... quickSuggestions.strings
Visual Studio C++ Build Tools + clang-cl + CMake + Ninja で C++ バッチビルドや VSCode 連携環境を整えるNinjaVSCodeclang-cl 背景 Windows C++ アプリを MSVC or clang-cl でバッチビルドしたい(e.g. CI ビルドなど) VSCode + Cmake でお手軽連携したい WSL で Linux 環境で Windows アプリをビルドしたい MSVC(コンパイラ関連)は Visual Studio 入れるか, C++ Build Tools でインストールできます. C++ Build Tools とは? 名前がころころ変わります. 最近は Build Tools for Visual Studio 2019 です. (2022/11 時点では Microsoft C++ Bu
N 分木表現をデータサイズ小さくシリアライズしたい... たとえば二分木(binary tree)ですと, 木構造を配列で表現は容易です. implicit にする(木構造の情報の配列を持たない)ことも可能です. レイトレでの BVH データ構造によく使われていました(~2015 年くらいまで. 今でも主流なんじゃろか) implicit で, 子のノード数が固定な N 分木(e.g. 4 分木)などにも適用することができますが, 使われないノードが増えるなどして無駄が多くなります. 木構造を単純な 1D 配列にすることで, シリアライズや GPU での処理などがやりやすくなります. しかし複数の子で構成される N 分木(多分木. たぶん... 木? ではない)ですとどうしたらよいでしょうか. 二重連鎖木 二重連鎖木というのがあります(child-sibling tree)など呼び名はさま
背景 Python で自作ライブラリ(モジュール)を作っている, Python アプリのコードのモジュール化をしている. 自作ライブラリのモジュールは他の自作モジュールを参照することもある unittester とかではしらせずらい(GUI 使っていたりして, UI のコンポーネントをテストしたい), テスト .py つくる, なんかの test フレームワーク使うのもめんどいので, モジュールに単体テストコード書いてぱぱっと時短ですませたい.. テストファイルわけると, vscode とか使っている場合, working directory 設定とかめんどい... from . import myui とかあるけど単体で動かす場合はエラーになってしまう... 自作ライブラリをパッケージングしているときに, pip とかでインストールされた site-package のほうではなくて, 手
背景 画像処理とか機械学習で, img-000.png, img-001.png ... などとファイル名を連番で(or 既存ファイル名を上書きしないようにユニークな名前にしたい)作りたい. imageio とか pytorch あたりにユーティリティ関数としてありそうですが, どうも無さそうなので自作します! 方法 現状はファイル名を見て, 存在するかどうかで処理するしかなさそうです. 今回, 最新ファイル名は同じにしたいので, たとえば既存ファイルがあったら, それを test-0000.png, test-0001.png, ... にリネームというふうにしてみました. import os from pathlib import Path def rename_existing_file(filename): p = Path(filename) if p.exists(): ftu
背景 chia plot, GPU マイニング, 機械学習やレイトレなどで性能良い SSD, GPU が余っている. chia plot が終わったりとか, 機械学習プロジェクトが終わったとかで HW が遊体していてもったいなので活用方法を考えたい. Filecoin mining を考えてみます. ただし日本で合法的にできるかは要確認. 種類 Storage miners : ストレージの保存に責任を負う Retrieval miners : ファイルの提供(retrieval)を quick に行うのに責任を負う Repair miners : 実装はこれから Storage miners : ストレージ領域を提供するほどリワードがもらえる データは 32 GiB のセクタ(sector)単位で sealing(暗号化とか?)して保存される. Retrieval miners : デー
IPFS : ホットストレージ的. 長期に渡り使われない(アクセスされない)とデータを失うかもしれない Filecoin : コールドストレージ的. IPFS と組み合わせ, IPFS でファイルがロストされたら Filecoin から復元する, みたいな. IPFS のノードは立てやすいですが, Filecoin にデータ保存だと miner を建てる必要がある必要があるっぽい?で HW のハードルが高いので, 既存のサービスを使ってみます. どのサービスも Filecoin マイニングなどしていて, その収益で fee プランを提供しているものと思われます. Space.Storage が web3 アカウントで非中央集権的に扱えてよさそうですが, 現状 beta なので, Web3.Storage 使ってみます. Web3.Storage Protocol Labs(Filecoin
LAION-400M(4 億枚の画像とテキストペアのデータセット)をダウンロードして管理したいメモ(なんかダウンロード無理っぽそう)webdatasetlaionimg2dataset 背景 LAION-5B 出た!(50 億枚の画像とテキストペアのデータセット) これで自前環境で Stable diffusion 学習とかしたい... だいたい 300 TB に収まるようです. ストレージについては Chia farming などで 1 PC あたり 100 TB くらいの環境はそろえている... (TiB だと 90 TiB くらい...) /dev/sda2 2.7T 2.5T 76G 98% /mnt/chia-000 /dev/sdb 13T 13T 75G 100% /mnt/chia-001 /dev/sdc 7.3T 6.9T 27G 100% /mnt/chia-002
背景 Uniswap での流動性ペアの各トークン量をスクリプトで取得したい. 税金の損益計算で必要だったり, 価格の歪みが生じていて裁定の機会がないかチェックしたい, など. etherscan で調べるのはできるが, API 叩いて取得などは PRO 版でないと無理っぽい. Python web3 で取得してみます. ブロックチェーンノードを用意する geth を自分で立てる infra などのサービスを使う 今回は infra 使います. アカウント登録して project id を取得しておきます. chainlink が public なノード建ててくれていました. こちらも使えます. ただ, 最新ブロックのみ取得できました. 過去のデータにアクセスするには archive node を建てるか(geth --syncmode full --gcmode archive), arc
Remote Linux は X11 転送です. したがって OpenGL とかで GPU accelerated な 3D は基本使えないです また, Jupyter 上で tk(ttkbootstrap)はうまく動きません(スレッド関係とかっぽい) とりあえずは筆者のような要求の場合は, web-based で Panel -> Gradio/StreamIt -> JupyteLab, native で動くのでよければ dearpygui -> ttkbootstrap でしょうか.. Tk(ttkbootstrap) tkinter で画像処理系の GUI を作るメモ https://qiita.com/syoyo/items/4899913556cb0d414103 レイアウト処理がめんどい, ライブリロード出来ない. OpenCV 使うくらいであれあば pyinstaller
C++14, C++17 Python C/C++ モジュールを cmake build しパッケージングして pypi にアップロードするメモ(2022 年夏版)PythonPyPI とりあえずのまとめ scikit-build を使い setup.py を記述. C++14 : manylinux2014 or manylinux_2_24 ターゲットにして作る manylinux2014 がより広く使えるが, コンパイラ環境はやや古い C++17 : manylinux_2_28 ターゲットにして作る manylinux_X_Y の場合, インストール側は pip 20.3 必要です! 背景 今まで?だと setup.py で Python モジュールをビルドとパッケージングしていましたが, 最近は pyproject.toml で build みたいな流れがあります. しかし試した
vim で rust プロジェクトの quick fix(ビルドしてエラーでたらそのエラー場所に移動したりする)をやりたい... 一方で C++ quickfix の設定は残しておきたい... 方法 とりあえず rust プロジェクトに .vimrc.local を作り, それを読むようにします. 空で vim を起動したときもローカルの vimrc 読みたいときは BufEnter も追加しておきます! ビルド設定 'rust-lang/rust.vim' のプラグインは最新 vim(8.2)はもしかしたら標準で入っているかもしれません. 私は ctrl+m でビルド走らせるようにしているので, ローカルの vimrc は以下のような感じになりました. ".vimrc.local compiler cargo map <C-m> :make build<CR> autocmd Quick
背景 CMake で libPython とリンクするアプリ/ライブラリを作成したいが find_package(Python) がなんかいろいろややこしい... 例として nanobind https://github.com/wjakob/nanobind で C++ の python モジュールを作るのを想定します. CMake のバージョンは 3.12 ~ 3.22 を想定します. 主な変更点として 3.12 : FindPython サポート 3.14 : Import target(Python3::Interpreter など) が CMAKE_ROLE project のときのみ生成 3.15 : Python3::Module import taget, Python3_FIND_FRAMEWORK 対応 3.18 : Development.Module, Develo
Python で interruptible な xmlrpc server(socketserver) を作るメモ(threading)Python xmlrpc server(sockerserver) の serve_forever のように永遠にブロックする関数を呼び出して処理するときにアプリ内部から停止する JupyterLab とか PyQt とかで GUI でサーバースタート, ストップしたいときなど. Windows, Unix で使えるのがほしい. Threading Pythonのthreadingとmultiprocessingを完全理解 https://qiita.com/kaitolucifer/items/e4ace07bd8e112388c75 ありがとうございます. thread + event でいけます! (Python thread も実装には Win
背景 Zemax(Optics Studio)を Python で制御したい... C++ API もありますが, そこまで C++ を駆使するほどでもないので Python でぱぱっとやりたい 仕組み 大元は C# あたりで記載されているようで, 各言語は .NET binding で提供されているようです(すくなくとも, Python はそうなっている) スタンドアローン(dll 直接叩いて処理. Optics Studio 起動しなくとも動く), Optics Studio の画面に結果を出すなどのインタラクティブモードの2つのモードがあります. ここではスタンドアローンでやります. Python であれば Matplotlib などでプロットしたりもできますしね. また, インタラクティブモードでもある程度動きますが, Optics Studio の GUI との連携はとれません.
imgui でこんなのを実現したいときはどうしたらいいかしらん... のメモです. 対象 ImGui version 1.71(or 1.72 WIP) Docking window にしたい. ImGui はデフォルトではフリーレイアウトです. docking branch でドッキング対応が作業中です. 使っている感じではほぼ問題なく動いています. ImGuiConfigFlags_DockingEnable を指定すると自動でドッキングが有効になります. ImGui::CreateContext(); auto& io = ImGui::GetIO(); // Enable docking(available in imgui `docking` branch at the moment) io.ConfigFlags |= ImGuiConfigFlags_DockingEnabl
背景 Wine で Windows バイナリを動かす時に, wine64 a.exe とか打つのがめんどい. ./a.exe とかで, .exe を直接実行したい. binfmt でいけます. 方法 Ubuntu(systemd 系)だと, まずは systemd-binfmt.service を立ち上げておきます.
次のページ
このページを最初にブックマークしてみませんか?
『@syoyoのマイページ - Qiita』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く