タグ

*programとgpuに関するsh19910711のブックマーク (13)

  • 行列の積演算で openBLAS cuBLAS を体感する - Qiita

    Basic Linear Algebra Subprograms (BLAS) の 行列の積 演算が、C の for 文で率直に書いたルーチンに比べ、どれ程のものか体感してみる。 背景 深層学習の実装を理解していくにあたり、行列の積演算を高速に行いたくなった。 BLASは 行列の積演算が速いとの話を目にするが、実際に使ってみたことはなかった。 → 今回 BLAS の性能を体感してみる。 BLAS について 下記Webサイトを参考にしています。 ・Basic Linear Algebra Subprograms(Wikipedia) ・BLASの簡単な使い方 ・CUDA Toolkit cuBLAS ・インテル(R) 数値演算ライブラリ(MKL) リファレンス・マニュアル(PDF)

    行列の積演算で openBLAS cuBLAS を体感する - Qiita
    sh19910711
    sh19910711 2024/05/22
    "深層学習の実装を理解していくにあたり、行列の積演算を高速に行いたくなった / cuBLAS: NVIDIA のグラフィックカードのGPU上で並列演算 / gefoce1050ti な 15K円位のボードでも 率直C版に比べ 500倍以上の差" 2017
  • Jax・Brax・HaikuでGPU引きこもり学習

    sh19910711
    sh19910711 2024/05/19
    "XLA: Tensorflowのバックエンドとして開発された中間言語 / Brax: 物理シミュレーターもJaxで書いてしまえば勝手にGPU上で動いて速いんじゃない?というモチベーション + OpenAI gym風のEnv API" 2021
  • huggingfaceのaccelerateを使って訓練時のCUDA out of memoryを回避する - Qiita

    はじめに 学習スクリプトを実行しているときにGPUにメモリが乗り切らなくてCUDA out of memoryで処理が落ちてしまい、学習スクリプトを最初から実行し直すハメになることがよくあります。 特に自然言語処理とかだと、batch毎に最大系列長に合わせて短い系列をpaddingするような処理をしている場合、毎ステップで必要なGPUメモリが変化するため、バッチサイズを大きく設定していると1エポック終わるまで不安で仕方ありません。 さらにTransformerベースのアーキテクチャーを使っている場合は、消費メモリが系列長に対して2乗のオーダーなので、ちょっと長い系列長のデータがあったら想定以上にメモリを消費して溢れてしまうケースとかもよくあるんじゃないでしょうか。 huggingfaceのaccelerateというライブラリ内のfind_executable_batch_sizeという機能

    huggingfaceのaccelerateを使って訓練時のCUDA out of memoryを回避する - Qiita
    sh19910711
    sh19910711 2024/05/10
    "Transformerベースのアーキテクチャーを使っている場合は、消費メモリが系列長に対して2乗のオーダー / accelerate: TPU、GPU、CPUでの実行を同じコードで記述できる / accelerate launch {スクリプト名}.pyのように実行" 2023
  • Python: LightGBM v4.0 の CUDA 実装を試す - CUBE SUGAR CONTAINER

    LightGBM のバージョン 4.0.0 が 2023-07-14 にリリースされた。 このリリースは久しぶりのメジャーアップデートで、様々な改良が含まれている。 詳細については、以下のリリースノートで確認できる。 github.com リリースの大きな目玉として CUDA を使った学習の実装が全面的に書き直されたことが挙げられる。 以前の LightGBM は、GPU を学習に使う場合でも、その計算リソースを利用できる範囲が限られていた。 それが、今回の全面的な刷新によって、利用の範囲が拡大されたとのこと。 ただし、PyPI で配布されている Linux 向け Wheel ファイルは CUDA での学習に対応していない。 対応しているのは CPU と、GPU でも OpenCL の API を使ったもの。 そのため、もし CUDA を使った学習を利用したい場合には自分で Wheel を

    Python: LightGBM v4.0 の CUDA 実装を試す - CUBE SUGAR CONTAINER
    sh19910711
    sh19910711 2024/04/30
    "CUDA を使った学習を利用したい場合には自分で Wheel をビルドする必要 / pip: --no-binary で PyPI の Wheel をインストールせず、ソースコード配布物を自身でビルド + キャッシュが効いてしまわないように --no-cache も指定" 2023
  • Flash AttentionとDeep Speedを使ってLLMをGPU1枚でフルファインチューニングする - Qiita

    TL;DR Deep Speedのoffload_optimizer機能を使って、VRAM40GBのGPU1枚で3.6BパラメータのLLMをファインチューニングしました。 さらに、Flash Attentionを使うことで、学習を高速化しつつ使用メモリ量も減らし、より長い系列長で学習を行うことができました。 はじめに Flash AttentionはAttentionの計算で使用するGPUメモリ量を系列長の2乗のオーダーから1乗に削減する技術で、xformersやoptimum、さらにはtransformersライブラリでも簡単に使用できるようになってきています。 前回の記事(1, 2)では、LLMの推論においてFlash Attentionを使ってみたのですが、推論ではあまり効果が見られないという結論を得ました。 今回はFlash Attentionが領を発揮するであろう学習(ファイン

    Flash AttentionとDeep Speedを使ってLLMをGPU1枚でフルファインチューニングする - Qiita
    sh19910711
    sh19910711 2024/04/28
    "Flash Attention: 推論ではあまり効果が見られない / GPU1枚で学習を行うためにDeep SpeedのZeRO-2を使用 / 系列長を長くして1ステップ当たりに含まれるトークン数を増やすと、学習が効率化されて高速化される傾向" 2023
  • LiLM 小規模言語モデル TinyLlama 1.1B の日本語追加事前学習(incremental pretrain) を試したメモ

    背景 日語性能のよい軽量 LLM, LiLM, Lightweight Language Model ほしい... スマホで動かしたり, ブラウザで動かしたり... ドメインは知識応答系. Code 生成とか数学とかのドメインは今は考えない. Chinese LLaMa https://zenn.dev/syoyo/scraps/6c3e92402e6fd0 でいい感じに incremental pretrain(追加事前学習) するといけるっぽいことがわかった! ん-, でも 7B or 14 B 規模で試して当にうまくいくのかわからん... (後日 たぶん似たような方法で rinna ちゃんが Youri 7B, ELYZA ちゃんが Japanese LLaMa 7B 出してきた! それなりにいい感じになったようだよ) あと 7B だとやっぱりまだちょっと大きい. 量子化してギリ

    LiLM 小規模言語モデル TinyLlama 1.1B の日本語追加事前学習(incremental pretrain) を試したメモ
    sh19910711
    sh19910711 2024/04/20
    "追加事前学習: CPU mem は 160 GB くらい + 192 GB or 256 GB あると安心 + 学習は 225 W に powerlimit した 3090 x 2 でおよそ 100 日 / WASM でブラウザ動作デモできるようにやっぱりどこかの時点で公開するかも" 2023
  • WebGLからWebGPUにステップアップしよう! - Qiita

    はじめに この記事はHIKKYアドベントカレンダー2023の10日目の記事です。 こんにちは、 @emadurandal と申します。HIKKYのエンジン開発部でメタバースエンジンの開発に従事しています。 今回は、WebGLからWebGPUへのステップアップについての記事を書いてみようと思います。 なぜWebGPUが登場したのか WebGLはOpenGL ESのAPI体系をブラウザに移植したものです。 そのOpenGLですが、歴史的経緯により、GPUCPUの性能を完全に引き出しきれないレガシーな部分を引きずっていました。 詳しくはこちらの記事をご覧ください。 そのため、WebGL2の次はWebGL3というわけにはいかなかったようです。 よりGPUの性能を引き出せる、よりモダンなAPI体系が必要でした。ネイティブにはVulkan APIがありますが、それをそのままブラウザに持ってくるには、

    WebGLからWebGPUにステップアップしよう! - Qiita
    sh19910711
    sh19910711 2024/04/13
    "WebGPU: Metal、DirectX12、Vulkanそれぞれの特徴をうまくまとめ、その共通項となるAPI / Compute Shaderがサポートされ、GPUを汎用計算に使える / TensorFlow.jsなどがWebGPUのCompute Shaderを活用するように対応を始めている" 2023
  • Python: PyTorch で Apple Silicon GPU を使ってみる - CUBE SUGAR CONTAINER

    PyTorch v1.12 以降では、macOS において Apple Silicon あるいは AMDGPU を使ったアクセラレーションが可能になっているらしい。 バックエンドの名称は Metal Performance Shaders (MPS) という。 意外と簡単に使えるようなので、今回は手元の Mac で試してみた。 使った環境は次のとおり。 GPU が 19 コアの Apple M2 Pro を積んだ Mac mini を使用している。 $ sw_vers ProductName: macOS ProductVersion: 14.4.1 BuildVersion: 23E224 $ sysctl machdep.cpu.brand_string machdep.cpu.brand_string: Apple M2 Pro $ pip list | grep -i tor

    Python: PyTorch で Apple Silicon GPU を使ってみる - CUBE SUGAR CONTAINER
    sh19910711
    sh19910711 2024/03/30
    "PyTorch v1.12 以降では、macOS において Apple Silicon あるいは AMD の GPU を使ったアクセラレーションが可能 / Apple Silicon の GPU は、そこまで速くないにしてもワットパフォーマンスには優れている + CPU に比べればずっと速い"
  • TVMのバックエンド開発に参加した話 ~ AMDGPU で PyTorch のモデルを動かす ~ - Qiita

    先月、ひょんなことがきっかけで、TVM のバックエンド開発に関わっていました。 そのときの成果をブログとしてまとめて、TVM のウェブサイト上に載せました。ぜひご覧ください。 開発の成果の例として、PyTorchで学習したモデルをAMDGPU 向けにコンパイルし、推論を実行、ということができるようになりました。 ここでは、上のブログの内容や、開発に参加するにいたった経緯、開発中のこぼれ話などを紹介したいと思います。 TVM AMDGPUバックエンドの紹介 TVMは、様々なハードウェア向けに Deep Learning 推論用の最適化コードを出力するための、ドメイン特化言語 + バックエンドコンパイラからなります。 僕が今回関わったのは、そのうちのAMDGPU向けバックエンドの開発です。このバックエンドは、TVMのLLVMコードジェネレータと、LLVMのAMDGPUバックエンドを組み合わせて

    TVMのバックエンド開発に参加した話 ~ AMDGPU で PyTorch のモデルを動かす ~ - Qiita
    sh19910711
    sh19910711 2022/10/07
    2017 / "TVM: 様々なハードウェア向けにDeep Learning推論用の最適化コードを出力するためのドメイン特化言語 + バックエンドコンパイラ / 作者のTianqi Chenさん(超人)はPackedFuncという独自の方法でC++とPythonの連携を可能にして"
  • Spark RAPIDSを試したら凄かった - なぜか数学者にはワイン好きが多い

    NVIDIA Spark RAPIDSを試してみた Apache Sparkファンとしては,Sparkの色々な活用方法を探しています.特に私はIBM PowerでSparkを使っているので,機械学習のためのライブラリを使おうとすると,色々と苦労しています.幸い,IBM Powerは,ギリギリでNVIDIAのサポートを受けています.例えば,CUDAが使えます. ならばSparkでCUDAを使ってGPUを活用したい! と思いますよね. そこでSpark RAPIDS. GitHub - NVIDIA/spark-rapids: Spark RAPIDS plugin - accelerate Apache Spark with GPUs RAPIDSは様々なプロジェクトのトップです. Open GPU Data Science | RAPIDS 今回は,RAPIDSの中のSpark RAPID

    Spark RAPIDSを試したら凄かった - なぜか数学者にはワイン好きが多い
    sh19910711
    sh19910711 2021/11/01
    "SparkでCUDAを使ってGPUを活用したい!と思いますよね.そこでSpark RAPIDS / 緑はRAPIDSを使った時で,レコード数が増えても処理時間が変わりません / 色々試した結果,GPUのメモリが溢れるまでは定数時間でイケました"
  • CuPy カーネル融合の拡張 - Preferred Networks Research & Development

    記事は、2019年インターンシップとして勤務した徐 子健さんによる寄稿です。 2019年度夏季インターンのJoeです。この度インターンプロジェクトとしてCuPyのカーネル融合の拡張に取り組み、既存のカーネル融合の適用範囲を大幅に拡張しました。さらにその応用として、ResNet50のバッチ正規化においてCPU実行時間を30%ほど、GPU実行時間を(入力サイズに大きく依存しますがおおよそ)70%ほど削減することに成功しましたので、その取り組みをご紹介します。 背景 CuPyはNumPyと同じAPIを提供するPythonのライブラリで、CUDAを用いて演算を高速に行います。具体的には、行列・ベクトルの要素ごとの演算や、リダクションと呼ばれる、演算によって配列の次元が落ちる演算(たとえばcupy.sum)など、GPUが得意とする計算を高速に行うことができます。 さて、CuPyのGPU演算は強力で

    CuPy カーネル融合の拡張 - Preferred Networks Research & Development
  • プログラムを高速化する話Ⅱ 〜GPGPU編〜

    GPUを利用して汎用演算を行う技術であるGPGPUを用いて、プログラムを高速化する技法についてまとめました。高速化の具体例も適宜用いて解説しています。 CPU編はこちら https://www.slideshare.net/KMC_JP/ss-45855264

    プログラムを高速化する話Ⅱ 〜GPGPU編〜
  • Raspberry PiのGPUで行列乗算(その1) - Qiita

    追記: 2017/06/06 その後の成果 その後の私達の努力の結果、下記記事のコードよりさらに高速化されています。近日sgemmのコードを公開する予定です。 また以下の記事ではraspiのgpuを活用する事で画像認識等が速くなるはずだという事を言いましたが、その後以下のような成果が出ています。ConvolutionやActivation等もGPU上で実行するようにしています。 Object recognition camera with GoogLeNet, a 1000-class image classification model, running locally on #RaspberryPi 3 pic.twitter.com/WP99ePpfrM — 中村晃一 (@9_ties) 2017年4月29日 Raspberry Pi Zero version pic.twitter

    Raspberry PiのGPUで行列乗算(その1) - Qiita
  • 1