サブロウ丸

サブロウ丸

主にプログラミングと数学

pyenv, virtualenv 環境設定手順 & 操作方法のまとめ; Python

本稿ではpyenv, virtualenvを用いたpythonの仮想環境の構築方法とその操作方法をまとめます。なお、本稿の内容は私が所属した大学の研究室の先輩がまとめた資料をもとにしており、本人の承諾のもと公開しています。 pyenv install pyenv操作 pyenv-virtualen…

import torch; from torch._C import * # noqa: F403 ImportError: undefined symbol

>>> import torch Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/home/tateiwa/.pyenv/versions/3.10.5/lib/python3.10/site-packages/torch/__init__.py", line 202, in <module> from torch._C import * # noqa: F403 ImportError: /home/tatei</module></module></stdin>…

Megatron-LMを読む

NVIDIAが提案するTransformerをベースとする言語処理モデルの並列化実装。 Githubのレポジトリには Data Preprocessing (データ前処理) Pretraining(事前学習) Evaluation and Tasks(評価) のコードが含まれています。 事前学習については BERT GPT T5…

DFS(深さ優先探索); Python

二分木構造に関するDFSで、1. 行きがけ、2. 帰りがけ、 3. 通りがけ、 4. 全記録、のPythonコードを紹介します。本稿では下記の木を例に使用します。 深さ優先探索(DFS)はご存知のようにオレンジ色の順番のように、深く(子孫側に)進む方向を優先して二分…

クラスタコンピュータで mpi + pythonを実行する

本稿ではクラスタコンピュータでmpiを用いてpythonを並列実行するまでの手順を紹介します。 1ノードでの実行の場合 クラスタでの実行の場合 sshログインの整備 python環境の整備 実行コマンド pytest-mpi おまけ open-mpiのオプションについて 1ノードでの実…

フラクショナルカスケーディング応用

k-th number 方法 fractional cascading 実装 プログラムのまとめ まとめ k-th number 数列a_1, a_2, ..., a_nとクエリを表す数の3つ組みがm個与えられる。各クエリ(i, j, k)に対しa_i, ..., a_jを昇順にソートした際のk番目の数を出力せよ。 n ≤ 1000000 m …

Docker image and file to generate SVP Challenge instances

I created Dockerfile to generate instances of SVP Challenge. Dockerfile Usage Build and enter docker image pull from DockerHub docker pull nariaki3551/svp_generator docker run -v $(pwd):/mnt -it nariaki3551/svp_generator from Dockerfile do…

beam search; ビームサーチ; python

幅優先探索の亜種ですね。 rootノードのみからなるpath一つを持つpathsを生成 paths内の全てのpathを1階層分だけ展開しpathsを更新 スコアが最も高いk個のpathのみをpathsに残す 2に戻る 補足: https://www.baeldung.com/cs/beam-search 下記のように実装し…

Makefileの些事

PHONY .PHONY ダミーターゲット(PHONYは偽物の意) サブコマンドを作るために使用される。 .PHONY: clean clean: rm a.out main.o 上記によりmake cleanでrm a.out main.o が実行される。 .PHONYを指定しないと実行ディレクトリにcleanファイル/フォルダが…

最適化モデリングツール flopt を試してみる

Qiitaに記事を投稿しました。 Dev Community Medium 本稿では、最適化モデリングツールfloptの基本的な使い方やいくつかの機能の具体例を紹介します。(私も開発者の一人です) 最適化モデリングツールとは、ユーザーが解きたい問題を表現、具現化する作業をサ…

pybind11を用いた高速化 (master_mind)

pybind11を用いてPythonプロジェクトの一部をc++コードで置き換えて高速化を試みます。 本稿では以前作成したmaster mindのプロジェクトを題材にします。 作業前のコード 本稿で出てくる用語(ほとんど出さないように気をつけましたが)はmaster mind by c++; …

MLBenchのビルド

MLBenchのビルド(https://mlbench.github.io)に色々手間取ったのでその記録を残します。 最終的な手順 実行コマンド エラー一覧 error: blis/cy.c: No such file or directory Failed to build matplotlib Starting control-plane Error docker.errors.APIEr…

MPI_Datatypeのサイズを取得する

MPI

MPI_Datatypeのデータサイズは実行環境に依存しますが、その環境のデータサイズどうなのか? というのを調べる関数が用意されています。 MPI_Type_size(MPI_Datatype datatype, int * size); でsize変数にデータサイズが格納されます。(参考: MPI_Type_size(…

計算時における消費電力計測

関連記事 2014.01.20, Kirk W. Cameron (HPCwire Japan訳), HPC電力効率とGreen500 2015.03.31, HPCwire Japan, ExaScaler-1がさらに電力性能を向上させ、世界第一位相当の値を計測 2017.12.12. TECH_+, 3段階に分かれるGreen500の電力測定法 2018.05.19, 横…

書籍: スパコンプログラミング入門

スパコンプログラミング入門 並列処理とMPIの学習 [ 片桐孝洋 ]価格:3520円(税込、送料無料) (2022/6/19時点)楽天で購入 スパコンプログラミング入門 並列処理とMPIの学習 発売日: 2013年03月13日頃 著者/編集: 片桐孝洋 出版社: 東京大学出版会 発行…

書籍: 並列プログラミング入門

並列プログラミング入門 サンプルプログラムで学ぶOpenMPとOpenAC [ 片桐孝洋 ]価格:3740円(税込、送料無料) (2022/6/18時点)楽天で購入 並列プログラミング入門 サンプルプログラムで学ぶOpenMPとOpenAC 発売日: 2015年05月 著者/編集: 片桐孝洋 出版…

Python 巡回セールスマン問題

記事の更新をしたのでお知らせ。 bit-dpの理論と実装の解説pdfを作成しました。 inarizuuuushi.hatenablog.com

MLBench: Distributed Machine Learning Benchmark

機械学習の分散フレームワークのベンンチマーク。アルゴリズムなどは限られたものを利用する。ハードウェア(GPU-CPUメモリ)、並列(worker)数、ネットワーク帯域は可変なのでこれらの性能評価に用いることができる。 website documentation github 実行自体は…

ML Commons

ML Commonsとは、機械学習アプリケーションのベンチマークであるMLPerfの管理を行う団体のこと。 website: github: 2022/06/14時点でのベンチマーク項目は下記。 Training Training: HPC Inference: Datacenter Inference: Edge Inference: Mobile Inference…

pytorchでの分散処理にMPI backendを使用する

python.distributedでは分散処理用のAPIとして、Point-to-Point通信や集団通信が提供されています。なので結構細かい処理をカスタマイズできたりします。 通信のbackendとしては(pytorch 1.13の段階で) MPI、 GLOO、 NCCLが指定できます。それぞれのbackend…

Transformerについて

transformerについてまとめてみました。 speakerdeck.com

サーベイ: Automatic Graph Partitioning for Very Large-scale Deep Learning

Tanaka, Masahiro, et al. "Automatic graph partitioning for very large-scale deep learning." 2021 IEEE International Parallel and Distributed Processing Symposium (IPDPS). IEEE, 2021. @inproceedings{tanaka2021automatic, title={Automatic gra…

サーベイ: Supporting Very Large Models using Automatic Dataflow Graph Partitioning

Wang, Minjie, Chien-chin Huang, and Jinyang Li. "Supporting very large models using automatic dataflow graph partitioning." Proceedings of the Fourteenth EuroSys Conference 2019. 2019. @inproceedings{wang2019supporting, title={Supporting v…

Transformerによる翻訳システム自作; part5 multi layer block

本稿ではEncoderとDecoderをmulti-block化します。これでTransformerの基本的な構造は実装できたことになります。 Encoderでは、Attention → FeedForwardを一つのブロックとして、これを複数個積み上げます。このブロックでは入力と出力の次元は同じなので、…

Transformerによる翻訳システム自作; part4 FeedForward & Residual Connection

本稿ではFeedForward層とResidual connection(残差接続)、正規化層を導入します。Transformerはattention機構とFeedForward機構から構成されており、それぞれに対して残差接続が行われています。 実装 FeedForward FeedForwardとは循環構造を持たないニュ…

Transformerによる翻訳システム自作; part3 Multi-head Attention

本稿ではMulti-head Attentionについて実装を行います。 Multi-head Attention Q, K, Vを分割してそれぞれでscaled dot-product attentionを実行、結果を集約(concat) こちらの方が精度が良い(理由は分からんけども; 複数の文脈を取り出せるという効果も) そ…

Transformerによる翻訳システム自作; part2 プロトタイプの作成(シンプルなTransformer)

本稿では翻訳モデルのプロトタイプとして簡易化したTransformerを作成します。英語→日本語の翻訳モデルを下図の構成で作成します。 上図は"dog is cute"をencoder、"犬はかわいい。"をdecoderに入力して"犬はかわいい。"を推論させるように学習させている様…

Transformerによる翻訳システム自作; part1 事前処理 & 学習の大枠

本稿では翻訳モデルを作成するにあたり必須な自然言語の事前処理について整理します。 用語集 コーパス (Corpus) コーパスとは "言語学において、自然言語処理の研究に用いるため、自然言語の文章を構造化し大規模に集積したもの" 「コーパス」(2022年6月2…

Transformerによる翻訳システム自作

Transformer構造(の一部)を用いた深層学習アーキテクチャは自然言語処理におけるデファクトスタンダードになっています。 そこで、その心は何たるかを知るためにTransformerによる日英翻訳モデル作成をできるだけ自作することを目指します。 以降複数の記事…

サーベイ: Megatron-LM: Training Multi-Billion Parameter Language Models Using Model Parallelism

@article{shoeybi2019megatron, title={Megatron-lm: Training multi-billion parameter language models using model parallelism}, author={Shoeybi, Mohammad and Patwary, Mostofa and Puri, Raul and LeGresley, Patrick and Casper, Jared and Catanza…