サブロウ丸

Sabrou-mal サブロウ丸

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

SCIP version 8.0.3 コンパイル + おまけでpulpから実行

SCIP: https://www.scipopt.org/は言わずと知れたLP、MIPソルバ。 このプロジェクトにはfscip: https://ug.zib.de/も同封されています。これはSCIPのスレッド並列版ソルバです。 Environment Ubuntu 18.04.2 LTS Build unzip scipoptsuite-8.0.3.zip cd scip…

Mellanoxスイッチ MLNX-OSのアップグレード手順

NVIDIA (Mellanox)のスイッチ、例えばQM8700, SB7700, SB7800のMLNX-OSをアップデートする手順を示します。 以下これらはIBスイッチと呼称します。古いMLNX-OSだと比較的新しいトランシーバが認識(LinkDown)しなかったり、という問題が発生することがあ…

サーベイ: Topoopt: Co-optimizing network topology and parallelization strategy for distributed training jobs (2022)

Wang, Weiyang, et al. "Topoopt: Co-optimizing network topology and parallelization strategy for distributed training jobs." arXiv preprint arXiv:2202.00433 (2022). [paper] 概要 どんなもの? Metaにおける分散DNNトレーニングジョブの解析 それを…

ファジィLP

本稿では、ファジィの考え方に基づいた曖昧性を線形計画法(LP)に組み込む方法について紹介します。 線形計画法は次のような問題。 この線形計画法では、少なくとも単点に最適解がある(もし最適解があるならば)という性質があります。 すなわち、得られた…

線形計画法 初版(並木 誠)手続き 4.1 p115の気持ちを考える

本稿は [1] の p115 手続き 4.1 として紹介されている歪対称行列を用いた線形計画問題が内点 を含むようにする手順について考察を行うものです。 [1] 並木誠 線形計画法(朝倉書店, 2008) drive.google.com

スタックトレース; Python & C++

スタックトレースとは、実行していた関数やメソッドなどの履歴のことです。バグやエラーが発生した際にスタックトレースを表示させることでデバッグを行いやすくします。 Python tmp.py f = lambda: g() g = lambda: h() h = lambda: i() def i(): return 2/…

Pytorch デバッグモードでコンパイルする

デバッグモードでコンパイルする pytorch/tools/setup_helpers/cmake.py に下記を追加。(ついでにCMAKE_VERBOSE_MAKEFILEも追加しています) --- a/pytorch/tools/setup_helpers/cmake.py +++ b/pytorch/tools/setup_helpers/cmake.py @@ -305,6 +305,9 @@ …

書籍: その問題、数理モデルが解決します 社会を解き明かす数理モデル入門

その問題、数理モデルが解決します 社会を解き明かす数理モデル入門 [ 浜田 宏 ]価格:2090円(税込、送料無料) (2022/11/8時点)楽天で購入 著者名 浜田宏 ISBN 978-4-86064-568-7 ページ数 308ページ サイズ A5判 並製 価格 定価2,090円 (本体1,900円+税10…

GUROBI ソルバ ログの可視化

最終的に描写するもの 暫定解値と, 下限値の時間推移 最適値 下記記事のGUROBI版です。正規表現などの解説は、次の記事にあります。 描写コード gist.github.com

Transformerによる翻訳システム自作; part6 word embedding

本稿ではword embeddingとしてFastTextを導入してみます。 Pretrained Word Embeddings コード まとめ 他の記事 Pretrained Word Embeddings 学習済のword embeddingによる変換を試してみましょう。 pytorchで公開されているfastTextを使ってみます。 これは…

サーベイ: Architecture and Performance Studies of 3D-Hypter-Flex-LION for Reconfigurable All-to-All HPC Networks

Liu, Gengchen, et al. "Architecture and performance studies of 3D-Hyper-FleX-LION for reconfigurable all-to-all HPC networks." SC20: International Conference for High Performance Computing, Networking, Storage and Analysis. IEEE, 2020. bib…

サーベイ: Which can Accelerate Distributed Machine Learning Faster: Hybrid Optical/Electrical or Optical Reconfigurable DCN?

Yang, Hao, et al. "Which can Accelerate Distributed Machine Learning Faster: Hybrid Optical/Electrical or Optical Reconfigurable DCN?." 2022 Optical Fiber Communications Conference and Exhibition (OFC). IEEE, 2022. @inproceedings{yang2022c…

Pythonでのメモリリークデバッグ: 実践的なノウハウとテクニック

Pythonプログラムを実行していると、メモリ使用量が突然増加することに気付いたことはありませんか?想定よりも大量のメモリが消費される状況に直面した場合、通常疑われるのはメモリリークです。 メモリリークは、不要になったにも関わらず削除されずに残っ…

git: 'subtree' is not a git command

この記事を参考にしました。sudo権限がないので自分のホームディレクトリにusrディレクトリを作成してそこで作業していtます。 cd ~/usr/source/ git clone https://github.com/git/git.git cd git/contrib/subtree/ vim Makefile # (詳細は下記) make make …

GUROBI solver tips

緩和問題について https://support.gurobi.com/hc/en-us/community/posts/360077249052-Root-relaxation-objective-value-is-different-from-the-objective-value-from-continuous-model 混合整数計画問題のルート緩和は、単純な緩和問題(変数をすべて連続に…

サーベイ: An improved generalized conjugate residual squared (IGCRS2) algorithm suitable for distributed parallel computing

@article{zhang2015improved, title={An improved generalized conjugate residual squared (IGCRS2) algorithm suitable for distributed parallel computing}, author={Zhang, Li-Tao and Dong, Xiao-Na and Gu, Tong-Xiang and Zuo, Xian-Yu and Liu, Xin…

Pytorch 分散処理プロファイルを読む

Pytorchで用意されている分散処理機能(Distributed Data Parallel)の中では特にbackward時に勾配の計算と、その勾配の共有(集団通信)が頻繁に行われます。Pytorchではそのデバッグと性能計測用にその計算と通信の開始/終了のタイミングの計測が行われてい…

Python: 依存関係のあるオブジェクト集合の複製

導入 手法 愚直にやるなら... pickleによる複製作成 まとめ 導入 下図のような依存関係のあるDogとCatのオブジェクトがあるとします。Dogのcat属性にはCatクラスのオブジェクトが格納されていて、Catのdog属性にはDogクラスのオブジェクトが格納されていると…

CUDA version update

CUDAのバージョンを上げたときの手順を記録しておきます。 バージョンアップの方法を検索するとさまざまな方法が出てきますが、結局公式の方法が最もストレートでした。 環境: Ubuntu v18.04 上記のリンクから環境に合わせて選択。私の場合は Operating Syst…

サーベイ: Alpa: Automating Inter- and Intra-Operator Parallelism for Distributed Deep Learning

@article{zheng2022alpa, title={Alpa: Automating Inter-and Intra-Operator Parallelism for Distributed Deep Learning}, author={Zheng, Lianmin and Li, Zhuohan and Zhang, Hao and Zhuang, Yonghao and Chen, Zhifeng and Huang, Yanping and Wang, Y…

Read the Docsでコンパイル時のPythonのバージョンを変更する

Read the Docsでは現在(2022年10月)ではPython3.7を用いてドキュメントのコンパイルが行われており、プロジェクトがPython3.7に対応していない場合はコンパイル時にエラーが生じて内容がうまく表示されない場合があります。(例えばPython3.8 以上で導入され…

アルゴリズム関連の記事のまとめ

競プロっぽいやつ generatorを用いた二分木におけるパスの全列挙; Python - サブロウ丸 (DFS) 深さ優先探索; Python - サブロウ丸 (BFS) 幅優先探索; python - サブロウ丸 beam search; ビームサーチ; python - サブロウ丸 RangeMinimumQuery, RangeMaximumQ…

VSCode Jupyter Notebookでカーネル選択ができない、への解決策

題名の通りVisual Studio Codeでjupyter notebookを起動してカーネル選択をしようとすると、 "Jupyter サーバーに接続"などしか選べず具体的なPythonのカーネルを選択できない場合。 公式のPython ExtensionをインストールすればPythonカーネルを選択できる…

Python: デバッグとプロファイル

本稿の目的と構成 研究(仮説)とプログラミング(検証)は密接に関わっており、バグの少ないコードは実験のやり直しを最小限にし、手法の検討に必要な正しい情報の収集をサポートする。 しかしながら、テストコードを書いたり、バグの原因を見つける作業は…

flopt

floptに関する記事のまとめです。 floptとはユーザーが解きたい問題を表現、具現化する作業をサポートするソフトウェアです。最適化モデリングツール、と呼んでいます。 v0.5.6 flopt v0.5.6: - サブロウ丸 v0.5.5 flopt 仕様 v0.5.5: 全体構成 - サブロウ丸…

flopt 仕様 v0.5.5: Solverサイド

本稿ではfloptのSolverサイドであるソルバの話をします。 floptでは内部で実装されたアルゴリズムと外部ライブラリのソルバを用いて最適化を実行することができます。 Solver実装のキホン 解の登録 コールバック関数の実行 時間制限の確認 終了ステータス 問…

flopt 仕様 v0.5.5: Systemサイド -- 問題解析とソルバ選択

本稿ではfloptのSystemサイドである問題(Problem)の解析やソルバ選択について記載します。 問題解析とは? 本稿では問題解析をユーザーが定義した問題がどのタイプの最適化問題に属するのかを機械的に判断すること、とします。floptでは柔軟なモデリングによ…

flopt 仕様 v0.5.5: Userサイド -- モデリング

本稿ではfloptにおける柔軟で強力なモデリングを支える基盤である変数と式の設計を紹介します。 変数 (Variable) 式 (Expression) Expression 式の文字列表現とその恩恵 単項式と多項式クラス CustomExpression Sum, Prod 演算のオーバーライド まとめ 関連…

flopt 仕様 v0.5.5: 全体構成

これから数回にわたってfloptという私が開発している最適化モデリングツールの構成について紹介したいと思います。具体的な使い方というよりは、その仕様について記録を残すのがメインです。 具体的な使用方法やチュートリアルはこちら。 本稿ではfloptの構…

RangeMinimumQuery, RangeMaximumQuery, BitIndexTree coded by Python

I show the RangeMinimumQuery, RangeMaximumQuery and BitIndexTree python class implementations. RangeMinimumQuery and RangeMaximumQuery are data structures for faster obtaining the minimum and maximum value of sub sequential array. BitIndex…