iwiwi 備忘録

学んだことを殴り書きます。自分向けのメモです。

Lecture 11: Prompting, Instruction Finetuning, and RLHF (CS224n)

Since prompting, instruction tuning, RLHF, ChatGPT etc are such new and fast-moving topics, I haven't seen many university course lectures covering this content.So we made some new slides for this year's CS224n: NLP w/ Deep Learning course…

備忘録を再開しようかな

備忘録を久々につけてみようかな。暫く空いたこの期間に忘れたくないような学びがなかったという訳ではなかったんだけど、どうしても気軽にアウトプットできない期間ではありましたね。趣旨は変わらず、主に自分のためのメモを書いていく予定。 特に今、LLM…

JPEG を爆速でデコードできる OpenCV をビルドして Python から使う

深層学習の計算のボトルネックを GPU にできないことは、意外としょっちゅうである。結構よくあるのが、入力の読み込み・デコードがボトルネックになるパターンである。 JPEG データの場合、libturbojpeg というライブラリを使って読み込むと CPU 利用率がめ…

mp4をサクッと連結する

【ffmpeg】動画・音声を連結する concat の使い方 其の2 : ニコニコ動画研究所mp4boxを使うのが楽だった。MP4BoxをMacでテキトーに使う - 松久外吉のチラ裏 /Applications/GPAC.app/Contents/MacOS/MP4Box -force-cat -add AAA.MP4 -cat BBB.MP4 -cat CCC.MP…

PyTorch で開発中の JIT 機能

概要 https://github.com/pytorch/pytorch/tree/v0.4.0/torch/csrc/jit PyTorch は NN 定義をコンパイルし Python のユーザーコードを通らずモデルを実行できる機能を開発中。実は開発は普通にオープンに GitHub で行われているし master にじゃんじゃん入っ…

Deep Mutual Learning (arxiv)

[1706.00384] Deep Mutual Learning 手法 distillationの進化系 2つのネットワークを同時に学習させる 通常通りのsupervised learning lossに加え、mimicry lossを使う mimicry lossとは2つのネットワークの出力を似せたい(KLダイバージェンス) 実験結果 d…

PyPI でバージョン番号を変えず内容を変える

PyPI では、アップロードしたファイルを消すことが出来ても、置き換えることはできない。従って、あるバージョンでアップロードしてしまった後、そこにミスが発覚した場合、再アップロードして置き換えることは不可能である。 www.reddit.com ・・・というの…

「GNU開発ツール」を読んだのでビルド工程をマニュアル操作で進めてみる

www.oversea-pub.com 書籍に従いつつ手を動かしてみた時のメモ書き。gcc のバージョンの違いに注意して進めて行きます。 $ gcc -dumpversion 4.8 プリプロセス C 言語ソース (.c) → 前処理済み C 言語ソース (.i) $ cat hello.c #include <stdio.h> int main() { prin</stdio.h>…

mypy のソースコードをちょっと読んだメモ

mypy は Python の型アノテーションを元に静的な型チェックを行うライブラリ。型推論を行い返り値の型などもチェックする。 Pythonではじまる、型のある世界 - Qiita mypyやっていくぞ - Qiita [翻訳] Python の静的型、すごい mypy! - Qiita 起動からアルゴ…

Numba のコードをちょっと読んだメモ

Numba は LLVM を使って Python のコードを JIT するライブラリ。 ちゃんと速い。https://gist.github.com/iwiwi/9228787711a353e115ffcdee21f1a882 @jit からコンパイル部分に到達するまで @jit → decorators._jit → dispatcher というものが返される 適当…

LLVM Tutorial をやったメモ

LLVM Tutorial: Table of Contents — LLVM 5 documentation まだ途中までしかやってないです。Kaleidoscopeという言語の処理系を作っていきます。非常にシンプルな言語です。対話環境で入力されたコードをJITして実行します。 LLVM のバージョンで結構コード…

分散システム 7章「フォールトトレラント性」

部分的な障害の発生は単体システムでは起こらない分散システムの問題である フォールトトレラント性の導入 基本概念 高信頼性とは: 可用性 (availability)・・・ある瞬間に正常に稼働している確率 信頼性 (reliability)・・・障害を起こすことなくジョブが…

BLAS, LINPACK, LAPACK

BLAS とは ベクトルと行列に関する積や和などの基本的な操作を提供するライブラリのことっぽい。機能はレベルに分類されるらしい。 Level 1:ベクトル演算 Level 2:行列ベクトル演算 Level 3:行列同士の演算 有名な操作として GEMM (ジェム)がある。GEMM…

C++ を Python から呼ぶ方法まとめ

C API ctypes cffi Cython pybind11 Boost.Python SWIG

空のプロジェクトを PyPI に登録するまで

プロジェクトの名前を決めたらまずは PyPI で名前を予約しましょう。 PyPI にユーザ登録する TestPyPI というお試しサイトにも登録しよう。 https://pypi.python.org/pypi https://testpypi.python.org/pypi ~/.pypirc を作る パスワードを書かないでおくと…

apt パッケージ探偵をするときに使うコマンド

会社のバイアリアン(?)の人の問題解決が僕の10倍ぐらい速い。僕も少しずつでもコマンドを覚えていきたい。apt-cache show cuda-drivers apt-cache depends cuda-driversdpkg -l | grep nvidia dpkg -l | grep cudaapt-get changelog cuda-8-0 apt-get dow…

CNN による画像分類で使われる前処理・テスト時処理まとめ

とりあえず ImageNet 系の論文で、目に入ったものから順々にまとめていきます。情報・ツッコミ歓迎。 前処理・Data Augmentation Mean Subtraction 入力画像から平均を引く。[103.939, 116.779, 123.68] を各ピクセルから引く。VGG はこれ。 Per-pixel Mean …

スヌープモードを設定して QPI を爆速で超える

スヌープモードの影響 マルチ CPU のマシンでメモリ帯域を測ると、別ソケット側のメモリとの帯域が死ぬほど遅いという現象がある。これは、CPU のスヌープモードがデフォルトの「Early Snoop」になっているからである。BIOS からこれを「Home Snoop」に変更…

数列の和を計算するアルゴリズム

数列の和の計算にアルゴリズムなんて考える余地はあるのか?と思ったが、誤差についても考える場合、単純な方法以外にも複数のアルゴリズムが存在し使われているということを教えてもらった。 Kahan summation algorithm - Wikipedia Pairwise summation - W…

Cython の落とし穴

ポインタを使ってあれこれしたいときの落とし穴を会社で教えてもらった。 numpy の ndarray.data の挙動が型を指定するかによって変わる tutorials NumpyPointerToC · cython/cython Wiki · GitHubここに書かれた方法2でポインタを取り出したい時、引数の型…

Regularized Greedy Forest (RGF) のロス関数をカスタマイズする

Regularized greedy forest (RGF) in C++RGF の公式実装のロス関数をカスタマイズするには、C++ のコードを直接書き換えることになる。とはいえそんなに難しくない。以下の方法がお手軽。 src/comm/AzLoss.cpp を開く AzLoss::getLosses 関数に loss_type ==…

malloc にわざと失敗させる

#define _GNU_SOURCE #include <dlfcn.h> #include <stddef.h> #include <stdlib.h> #include <stdio.h> #include <assert.h> typedef void* (*malloc_t)(size_t); static malloc_t libc_malloc = NULL; static unsigned long malloc_max_called = 1000 * 1000; void initialize() { libc_malloc = (malloc_t)</assert.h></stdio.h></stdlib.h></stddef.h></dlfcn.h>…

機械学習アルゴリズムの直感を養えるデモ・記事

発見次第更新予定 デモ Neural Network A Neural Network Playground Classification with NEAT Gradient Boosting Gradient Boosting explained [demonstration] Gradient Boosting Interactive Playground t-SNE How to Use t-SNE Effectively — Distill …

NIPS のヤバいプロモーションビデオ

www.youtube.com音を出して観るべき。

Python の処理系

Pysco Pyjion Nuitka Skulpt

Chainerを明示的にCUDA無しを指定してインストールする

python setup.py --cupy-no-cuda install https://github.com/pfnet/cupy/blob/master/cupy_setup_build.py#L211github.comnvvp とか使いたさに中途半端に手元のマシンに CUDA を入れているとこういう指定が必要になる。

Deep Learning のデバッグ

ミニバッチ化時にミスることが多いので、以下のようなことをすると良いらしい。 データごとの計算を書いてみて、1 つずつ計算したものと照合する ミニバッチサイズを 1 にして計算したものの和or平均とミニバッチで計算したものを比較する

numpy の行列乗算:matmul, dot, @

stackoverflow.com dot と matmul 2 次元では完全に同一。3 次元以上では異なる挙動をする。 dot は a の最後の軸と b の最後から 2 番目の軸を掛け合わせる matmul は行列の配列だとみなして行列積を計算する @ 演算子 Python 3.5 以降では @ 演算子や @= …

t-SNE の実装はどれを使うべきなのか?

scikit-learn の問題点 scikit-learn 信者としてはとりあえず scikit-learn の実装を使いたくなるが、scikit-learn の実装はおすすめできないらしい。 -https://www.red dit.com/r/MachineLearning/comments/47kf7w/scikitlearn_tsne_implementation/ (はて…

バイナリ探偵をする時に使うコマンド

共有ライブラリ編 env | grep LD md5sum 一致してるものを調べる ls -l シンボリックリンクを調べる readelf -a hogehoge.so readelf -a hogehoge.so | grep SONAME SONAME を調べる find build/ -name '*so' | xargs ldd | less 依存関係を調べる ldd `whic…