サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
災害への備え
qiita.com/syoyo
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.
背景 2019 年コモディティ品で GPU 計算ノードを構築するメモ https://qiita.com/syoyo/items/cffcd64aa09cdb042b5d あたりで GPU 計算ノード(機械学習, レイトレ, マイニング)を構築している 2019 年からだいたい 2.5 年くらい連続稼働させていて(~10 nodes くらい), インシデントも多少たまってきたので記録です. GPU の障害 1~2 週間連続稼働させているとエラーも出やすくなります. Linux(Ubuntu) + GPU エラーメッセージ集 https://qiita.com/syoyo/items/0707daed0295db6a3ffa GPU fallen of the bus がよく出ます: 熱暴走なり, メモリエラーが原因が多い模様. 基本リブートすれば治る. 機械学習などで長期間回すときは GP
M1 macOS で python + numpy/scipy/pandas/matplotlib/jupyterlab 環境構築のメモ(2020/12/24 時点)PythonmacOSARMM1 M1 macOS で arm64 native な python と numpy/scipy/matplotlib, Jupyter-lab など入れてデータサイエンスしたい. 現状だと x86 の時と同じやり方でインストールしようとすると, M1(arm64) の場合はコンパイルがコケたりなどしてうまく行きません (pip とか, macports 経由とかでインストールとか) 例えば altivec(みんな知っているかな!) コンパイルフラッグが clang 未サポートで numpy ビルドできないなどの issue があります. いずれ時が解決するでしょうが, 待つのもめんどいです. ソ
Software render で OpenGL なしに GUI + 画像を描画する UI ライブラリ(C/C++)のメモSDL2imguilibui 背景 レイトレやビジョン系機械学習(顔認識とか)で画像を出す + GUI がほしい. C/C++ で記述されたもの. ピクセルデータ(配列)から画像データが表示できること cross platform(Linux, Windows, macOS)対応 X11 で画面を飛ばして描画したいなどで, OpenGL を使わないようにしたい x11vnc とかだと画面全体を転送で遅い(=> 10GbE にすればある程度解決するかもだが?) ミニマルな構成 and 環境整備が楽であることが理想 いろいろ開発マシンを変えて開発したり, 各人の PC でも問題なくコンパイルできるように, すぐに環境整えられる or git sumodule で追加できるの
背景 レイトレーシングや機械学習など, aarch64(arm64) linux のプログラムを書いていたり, ライブラリをビルドしていたりする 市販で入手しやすい Native 環境(e.g. Raspberry Pi 4, Android スマホ + termux や, Jetson AGX とか. だいたい aarch64 4 コア + 8 GB mem な環境) だとビルドが遅かったり, 並列ビルドすると out-of-memory になりつらいので, つよつよ host PC(Threadripper とか)で cross-compile でやりたい 特に embree-aarch64 で ARM のビルドだと, 同等の性能の x86 の 5~10 倍はコンパイル遅いような現象が出て辛い AWS とかでつよつよ ARM インスタンス借りる手もあるが, レイトレーシングなど画面に出
背景 Chainer で書かれた automatic portrait image matting のモデルを, ONNX にコンバートしてモバイルで動かしたい resize_images を pyramid pooling で利用している. onnx-chainer では resize_images のエクスポートに対応していなかったので, 対応しようとしたところ, resize_images(より正確には upsampling + bilinear 補間)の振る舞いが Chainer と ONNX で異なる(TensorFlow とも異なる)ことがわかった Chainer, ONNX, TensorFlow いずれもドキュメントでは bilinear 補間するとだけ書いてあり, 実際どのような bilinear 補間をするのかという仕様がありません. 実のところ, bilinear 補
冬到来! RX470 8GB マイニングエディションと ROCm TensorFlow で, GPU 機械学習をはじめよう(CIFAR10 7,600 examples/sec @ 88W)TensorFlowROCmrx470 冬到来! RX470 と ROCm TensorFlow で GPU 機械学習をはじめよう! RX470 8GB mem mining 版(中古)が, 税込 6.5 千円ちょっとくらいで買えるので(2019 年 1 月 10 日時点), お手軽に試せるよ! 優秀な TensorFlow 小学生さまにおかれましては, お年玉で買えてしまいますね. RX470 mining 版はメモリが 8GB で機械学習を始めるのによいのですが, 画面出力が無いので, GPU 内臓の Intel CPU と組み合わせるか, 画面出力用に別 GPU で Linux をセットアップして
libClang/LLVM を使って C++ コードを JIT コンパイルする環境を整えます. 概要 構成としては以下のようになります. +------------------+ includes | | JIT +------------+ +--------------+ | C++ app | <--+- | C++ code |<---| STL header | | | | +------------+ +--------------+ +------------------+ | | C header | | libClang | | +--------------+ +------------------+ | | | libLLVM(MCJIT) | | | +------------------+ | | | STL/libc runtime |----+--------
Docker でコンテナを起動するとデフォルトは root になりますね. run するときに -u オプションでユーザを指定することができます. ただしこのユーザ名はコンテナ内でのユーザ名なので, ホスト側のユーザ syoyo を使って,
単一画像からの最新ディープラーニング顔アルゴリズムを試す(2017 年 7 月 14 日時点) (2020 年 1 月 1 日追記)顔認識顔形状復元inverse_rendering 漢なら, 単一画像から顔認識したり顔メッシュを復元したりをディープラーニングでやりたいですね! やりましょう! DenseReg DenseReg: Fully Convolutional Dense Shape Regression In-the-Wild https://arxiv.org/abs/1612.01202 顔のセグメンテーション(目, 鼻, 眉とか)と形状推定ができます. Semantic Image Segmentation 用に DeepLab http://liangchiehchen.com/projects/DeepLab.html を使っています. 独自 python caffe
漢なら GPU クラスタで CUDA でレイトレースしたり機械学習したいですね! GPU を使っていないときはマイニングで機材費用の足しにしたいですね. 調べると nicehash とかでは, NVIDIA 系でも性能の出せるハッシュアルゴリズム(?)を使うことができるようです. 今回は(まだまだ先行者利益がありそうな) ZCash をマイニングすることにします. アイコンが「ネ」に見えて素敵ですね. 匿名性を高めた決済用通貨を狙っているようなので, 今後期待できそうな暗号通貨かもしれませんね. Mining tool 今回は以下を使いました. この miner だと, 現在は nicehash pool 専用のようで, ビットコインアドレスで使います(ビットコインに逐次変換されるのかな? ZCash で持ちたい場合は違うツールとマイニングプールを使うことになりそうです) 最高 400 S
漢なら GPU でレイトレーシングしたり機械学習ですね! しかし GPU クラスタを組んでも, タスクがあまりなくて遊待(idle)が多かったり, 夜使わないとかだともったいないですね. そこで最近話題の仮想通貨の GPU 採掘(Mining)で GPU 構築費用の足しにしてみることを考えたり, GPU をエージングし稼働耐性の高い GPU 個体を抽出するなどしたり, GPU 性能のベンチマークに使ったりとかしたいですね! ビットコインは ASIC 使うのが強いので, ASIC 耐性が考えられていてまだまだ GPU を使うことに意義のあるイーサリアムを採掘してみることにしましょう. 2017/04/21 時点ではイーサリアムが第二の取引ボリュームを持っています. https://coinmarketcap.com/ Radeon RX480と最近のイーサリアム事情 http://tatuj
int main(int argc, char **argv) { const char *cpc; const char *cpc2 = (const char*)cpc; short b = argc; return b; } $ clang-tidy file.cc 7 warnings generated. file.cc:1:27: warning: unused parameter 'argv' [clang-diagnostic-unused-parameter] int main(int argc, char **argv) ^ file.cc:4:3: warning: Assigned value is garbage or undefined [clang-analyzer-core.uninitialized.Assign] const char *cpc2 = (
漢なら golang で文字列テンプレート処理したいですね! golang では text/template パッケージが標準で入っています. でもサンプルを見ると構造体を作ってデータを流し込んでいてちょっと面倒ですね. type Inventory struct { Material string Count uint } sweaters := Inventory{"wool", 17} tmpl, err := template.New("test").Parse("{{.Count}} items are made of {{.Material}}") if err != nil { panic(err) } err = tmpl.Execute(os.Stdout, sweaters) if err != nil { panic(err) } package main impor
漢なら GitHub コミットして Travis ビルドして Bintray へデプロイですね! travisCI + Bintrayによる自動デプロイを試したメモ 参考になります, ありがとうございます. しかし Travis が用意しているサンプル手順 https://docs.travis-ci.com/user/deployment/bintray/ だと, バージョン番号は手動で JSON に書く必要があります. 毎回手作業はめんどうですね... 人間の欲望は飽きない. git tag を打ったら自動でよろしく tag 名でバージョンを設定してよろしく Bintray にアップロードしたくなりますね. そこで sed でバージョン番号とリリース日を travis ビルド後に書き換えた .json を作り bintray にアップロードする手を考えてみました. tinyobjloa
夏休み到来ですね! 新しいジブンにチャレンジの季節! 夏休みの自由研究でパストレーシングやりたいですね! 優秀な若人がヘッダーオンリーレイトレーシングライブラリ NanoRT と tinyobjloader で人類史上最速(2 日)でパストレーシングサンプルを作ってくれました(私が十数年前にパストレーシングを実装した時は 1 年くらいかかりましたね... 知の加速を感じますね). 素晴らしいですね! 最高のパストレーシングの夏にしようね! 映画ジャングルブックもパストレーシングだよ! https://www.fxguide.com/featured/out-of-the-pages-and-into-the-jungle-book/ パストレーシングする. $ git clone https://github.com/lighttransport/nanort $ cd nanort/ex
4K モニタで PbP で Mac/Win/Linux の画面を集約して表示してクロスプラットフォームグラフィックアプリ開発の効率化を図る4K 漢なら Mac/Win/Linux のクロスプラットフォームグラフィックスアプリ開発ですよね! しかし GPU を用いたグラフィックアプリ開発(OpenGL, Vulkan, OpenCL, etc)だと, リモートデスクトップや X11vnc で画面を飛ばすのは遅くて使いものにならないので, 基本ネイティブに画面を表示することになります. それゆえ, 3 つの 2K モニタで表示して開発という辛い日々が続いていました. また, 色味もモニタごとにことなるので, レンダリング画像の比較も難しい状況でした(毎回レンダリング画像を特定のモニタに転送して比較) そんなとき, ふとしたことから, 最近の 4K モニタでは PbP(Picture by Pi
春到来ですね! github で公開しているオープンソース C++ コードの外見もリフレッシュして新しいジブンにチャレンジしたいですね! あわよくば運命的な C++ 出会いも期待できちゃうかも...! そこでここでは, 春トレンドを先取りした C++ スタイルコーデを集めてみました. Google C++ Style Guide みんなの憧れ, デキる大人のギロッポン外資系クールな C++ スタイル! なんだかルールがいっぱいで大変そう... と思ったズボラでうっかりな性格のアナタでも大丈夫! cpplint がコーデを自動でチェックして全力アシスト! LLVM Coding Standards アーティスティックでスタイリッシュ, でもちょっとコンサバな新宿スタイル! clang-format と組み合わせて周りの視線をがっちりキャッチ! WebKit Code Style Guidel
自分で作ったオープンソースな C++ ライブラリ, メモリリークやバグの少ない状態で, いろいろな人に安心して喜んで使ってもらえるように, 普段から内面をキレイに保っておきたいですよね! ここでは C++ のコードを内面からキレイに保つレシピを集めてみました. (追記) @MitsutakaTakeda さんの C++ コードのデトックスも合わせて読んで, この春, 一歩先行くぬけがけ美ワザを極めちゃお! http://qiita.com/MitsutakaTakeda/items/6b9966f890cc9b944d75 Instruments MacOSX ユーザであれば, XCode に付属(?)の Instruments がオススメ. GUI でお手軽にメモリのプロファイリングやリークの調査が行えます. Valgrind 昔からある実行バイナリをインストゥルメントして解析してくれる
Matt Pharr 大先生がいつのまにやら golang で Google Drive と連携するコマンドラインファイル操作ユーティリティ作ってました. 漢なら黙って活用ですね! 何ができるか
漢は黙ってシングルファイル C/C++ ライブラリですね! シングルファイル C/C++ ライブラリとは, ヘッダファイル .h ひとつだけで機能が実装されているライブラリ(もう少し条件をゆるくして .cc も含む)のことです. header-only とも言われれたりします. このあたりの元祖は nothings 先生 http://nothings.org/ ですね. 最近は github にコードをあげています. https://github.com/nothings/stb シングルファイル系のライブラリまとめ一覧もあります. シングルファイル系が便利すぎてやばいので, 自分でもいくつか作りました. TinyObjloader(Wavefront .obj loader) https://github.com/syoyo/tinyobjloader TinyEXR(OpenEXR
漢なら GCE で Preemptible VMs を instance group で 100 万インスタンス規模でオンデマンドで立てて分散レイトレーシング処理を短時間で行いたいですよね! でもまだベータ機能なので 100 万インスタンス起動は無理そうですので, とりあえず準備として instance groups で Preemptible VM をささやかに立ててみましょう. できました. Terminate モードに設定を忘れずに gcloud CLI 経由で作業するものとします. instance template の create 時に --preemptible (--preemptive で無いことに注意!) に加えて, maintenance-policy を TERMINATE に設定する必要があります. --maintenance-policy TERMINATE T
A Fast, Minimal Memory, Consistent Hash Algorithm ご紹介(システム系論文紹介 Advent Calendar 2014).hashシステム系論文紹介分散ストレージjumpconsistenthash (本稿は, システム系論文紹介 Advent Calendar 2014, 12/20 です http://www.adventar.org/calendars/440) 論文は arXiv から取得できます. http://arxiv.org/abs/1406.2294 Jump Consitent Hash と呼ばれる, 分散ストレージ系で有益なハッシュ関数を求めるアルゴリズムです. 現在史上最強のハッシュアルゴリズムのひとつと言えるでしょう. 無性に分散ストレージライブラリを作りたくなってきますね! 共著者の Eric Veach にも注
LLVM には C++ と C API が用意されています. 最近は FTL http://blog.llvm.org/2014/07/ftl-webkits-llvm-based-jit.html のおかげで C API の整備が大分進み, 十分使える感じになっています. C API のほうがコンパイル時間も短くて済み, また言語バインディングを書くとなども, リンケージや ABI 問題に悩まされなくなります. これからは C API で書いておきたいですね. LLVM C API のサンプル ひとつの大きな問題はドキュメントやサンプルコードがオフィシャルには無い事です. 幸い FTL(webkit) には RefucedFTL という謎(?)の LLVM C API を使ったサンプルがあります. これをみれば大体わかりますね! 昨今の LLVM では MCJIT が推奨のようです. E
漢ならアプリに CPU 優先度を付けて実行したいですよね! でも nice だとうまくいかない… 悲しくて涙で枕を濡らす日々が続いていました… そこで昨今の Linux に搭載されている cgroups による CPU リソース制御を使ってみます. 当然ベンチマークアプリは aobench http://code.google.com/p/aobench/ ですね. OpenMP 化してマルチスレッド実行するようにしておきましょう. 設定 cgroups の機能を有効にしておきます.
漢なら RDMA でデータ送りたいですね! とりあえず手っ取り早く rsocket http://syoyo.wordpress.com/2012/12/06/rsocket-new-way-of-rdma-aware-programming/ を使い, 既存の python スクリプトで高速転送を実現してみましょう. 構成 Server と Client は InfiniBand QDR と, 1 GbE で物理的に繋がっています. InfiniBand のレイヤは IPoIB で繋がっているものとします. テストスクリプト Client から 1GB のデータを送り, Server 側はそれを受け取るだけというスクリプトです(単方向データ通信). # server.py import socket import itertools HOST = '' PORT = 8081 s = s
漢なら GCE(Google Compute Engine) から GCS(Cloud Storage) に, 安全かつお手軽にアクセスしたいですよね! GCE インスタンス起動 GCE インスタンス起動時に, cloud storage へのアクセスが出来る様ようにしておきます. を参考に, scopes の devstorage.full_control あたりです. GCE から GCS にアクセスしてみる. GCE のインスタンスに gcutil ssh INSTANCE-NAME でログインし, 内部から OAuth アクセストークンをメタデータサーバから取得してみます(curl がインストールされていると仮定). $ curl "http://metadata/computeMetadata/v1/instance/service-accounts/default/token"
漢なら Docker で OpenGL アプリを HW accelerated で(GLX)動かしたいですね! できました. TODO 現状だと 1 container が GPU を占有するようなので, 複数 container で共有できるようにする. Register as a new user and use Qiita more conveniently You get articles that match your needsYou can efficiently read back useful informationYou can use dark themeWhat you can do with signing up
漢なら docker コンテナで CUDA を使いたいですね! CUDA を使えるようにしましょう. セットアップ ホスト OS に CUDA とドライバ一式をいれておきます. 今回は Centos6.5 CUDA 6.0(driver 331.67) /usr/local/cuda に nvcc やら toolkit をインストール にしました. コンテナ内で CUDA プログラムを動かす. privileded つきで, libcuda.so と /usr/local/cuda を container に expose(volume mount)します. サンプルコードを /media にマウントします. $ docker run --privileged -v /usr/lib64/libcuda.so:/usr/lib64/libcuda.so -v /usr/lib64/libc
次のページ
このページを最初にブックマークしてみませんか?
『@syoyoのマイページ - Qiita』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く