タグ

ブックマーク / qiita.com/m__k (7)

  • 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
  • PyTorchを使ってCNNで文章分類を実装してみた - Qiita

    はじめに そういえば自然言語を畳み込んだことなかったなぁと思い、いつ必要になるかわからんので、どんなもんなのか雰囲気を確かめるために実装のお勉強をしてみました。 自分みたいに普段は自然言語処理ばかりしていて、CNNに不慣れな人向けに実装重視で解説してみます。 検証するタスクは、livedoorニュースコーパスの文をカテゴリに分類する問題とします。 実装環境はGoogle Colabを使っています。 以下の文献を参考にしました! https://arxiv.org/pdf/1510.03820.pdf CNNで文章分類をしている論文で、今回の実装もこの論文で紹介されているアーキテクチャーを参考にしています。 https://tkengo.github.io/blog/2016/03/11/understanding-convolutional-neural-networks-for-nlp

    PyTorchを使ってCNNで文章分類を実装してみた - Qiita
    sh19910711
    sh19910711 2024/02/28
    arXiv:1510.03820 / "ベクトル方向(行方向)全体に対して、隣接する単語ベクトルをひとまとまりにして畳み込む / 異なる単語分散表現(word2vecとfasttextみたいな)などを使って、複数チャネルとみなす方法もある" / 2021
  • OpenCALM-7BをLoRAでinstruction tuningするための実装解説 / QLoRAの実装も紹介 - Qiita

    はじめに ※記事で「現時点」という言葉は2023/6/1を指すこととします。 先日(2023年5月17日)、サイバーエージェントが日語に特化したLLM(Large Language Model)をhuggingface上に公開されました。 現時点で日語に特化したLLMで最大級のパラメータを持つモデル 商用利用可能 という点が非常に魅力的であり、すでにたくさんの方がこのOpenCALM-7Bを動かしたり、チューニングしたりされてるように、自分も勉強がてらこのLLMのチューニングに挑戦してみました。 とはいえ、パラメータ数が68億と巨大ですし、単純な全パラメータのファインチューニングは、私の手元の環境では現実的ではなく、何かしら軽量化したりDeepSpeedなどのライブラリで効率よく処理する必要がありそうです。 今回はLoRA(Low Rank Adaptation)と呼ばれる低リソース

    OpenCALM-7BをLoRAでinstruction tuningするための実装解説 / QLoRAの実装も紹介 - Qiita
    sh19910711
    sh19910711 2023/07/21
    "LoRA: PEFTというライブラリを使うと簡単 / ドキュメントは他のhuggingfaceのライブラリと比較して充実はしてませんが、PEFTを使った実装例についてはいくつかの記事 / QLoRA: 4ビットNormalFloat + ダブル量子化 + 統一メモリ"
  • GPT-2をファインチューニングしてニュース記事のタイトルを条件付きで生成してみた。 - Qiita

    はじめに GPT-2のファインチューニングの仕方がなんとなくわかってきたので、メモとして残しておきます。 事前学習モデルはrinna社が提供してくれている以下の日語モデルを使用します。huggingface/transformersから簡単にロードして使うことができます。 https://huggingface.co/rinna/japanese-gpt2-medium こちらのモデルはmediumとあるので、TransformerのDecoderブロックが24層重なったやつですね。 今回紹介する内容はGPT-2条件付き文章生成です。 GPT-2のチュートリアル的な記事でよく見るのが、与えた文章の続きにくる文章を生成するようなものが多いかと思いますが、出力の形式等を入力の段階から制御するようなことをしてみようと思います。 GPT-2自体の理解や、使い方、ファインチューニングの仕方、生成文

    GPT-2をファインチューニングしてニュース記事のタイトルを条件付きで生成してみた。 - Qiita
    sh19910711
    sh19910711 2022/05/11
    2021, Colab Proで間に合うのか / "GPT-2を動かすのを機にcolab proに課金する / バッチサイズは要注意 > 簡単にメモリーオーバー + colabでは1が限界 / 今回のファインチューニングはだいたい3時間ほど + テキストサイズ約10MB"
  • BERT2BERTによるニュース記事のタイトル生成 - Qiita

    はじめに huggingfaceを使ったEncoder-Decoderモデルの練習の一貫として、BERT2BERTによる文章生成をやってみました。 BERT2BERTはEncoder-Decoderモデルの一種で、Encoder層もDecoder層もBERTのアーキテクチャーを採用したモデルのことを言います。 ただし、Decoder層のBERTは通常のBERTと以下の2点で異なります。 最初のMutil Head AttentionがMusked Multi Head Attenion(単方向)になってる MMHAとFFNの間にCross Attention層があり、Encoderの特徴量を受け取れるようになってる アーキテクチャーはほぼほぼTransformerと同様の認識ですかね。この辺の構造も含めて、Encoder-DecoderモデルやBERT2BERTの理論的なお話やhuggin

    BERT2BERTによるニュース記事のタイトル生成 - Qiita
    sh19910711
    sh19910711 2022/04/25
    "BERT2BERT: Encoder層もDecoder層もBERTのアーキテクチャーを採用したモデル / 正直生成文章はとてもイマイチな結果 > データ量が少ない + 学習の仕方ももう少し工夫が必要なのかも / GPT-2のほうが日本語が流暢だった"
  • PyTorchで日本語BERTと日本語DistilBERTの文章分類の精度比較をしてみた&BERTの精度向上テクニックの紹介 - Qiita

    PyTorchで日語BERTと日語DistilBERTの文章分類の精度比較をしてみた&BERTの精度向上テクニックの紹介Python自然言語処理PyTorchbert はじめに 前回の記事でhuggingface/transformersを使って日語BERTを使ってみましたが、huggingface/transformersを使えば、他の事前学習済のBERTモデルも簡単に扱えます。 使えるモデルの一覧のうち、日語のものと思われるモデルは他にもDistilBERTとかALBERTとかがあるようです。どちらも軽量版BERTって位置づけですかね。 今回はhuggingfaceからも使えるバンダイナムコさんが提供しているDistilBERTを簡単に紹介しつつ、通常のBERTとの精度比較を行ってみました。最後にBERTで文章分類をする際の精度を向上させるテクニックの1つも紹介してみます。 D

    PyTorchで日本語BERTと日本語DistilBERTの文章分類の精度比較をしてみた&BERTの精度向上テクニックの紹介 - Qiita
    sh19910711
    sh19910711 2021/10/10
    "最終層のCLSトークンのベクトルのみ使うより、最終4層のCLSトークンのベクトルを結合して使ったほうが文章のベクトルをよりよく作れる / BERTの論文の5.3 Feature-based Approach with BERTでも紹介されています"
  • PyTorchで日本語BERTによる文章分類&Attentionの可視化を実装してみた - Qiita

    目次 記事はPyTorchを使って自然言語処理 $\times$ DeepLearningをとりあえず実装してみたい、という方向けの入門講座になっております。以下の順番で読み進めていただくとPyTorchを使った自然言語処理の実装方法がなんとなくわかった気になれるかもしれません。 PyTorchを使ってLSTMで文章分類を実装してみた PyTorchを使ってLSTMで文章分類を実装してみた(バッチ化対応ver) PyTorchでSeq2Seqを実装してみた PyTorchでAttention Seq2Seqを実装してみた PyTorchのBidirectional LSTMのoutputの仕様を確認してみた PyTorchでSelf Attentionによる文章分類を実装してみた PyTorchで日語BERTによる文章分類&Attentionの可視化を実装してみた ←イマココ はじめに

    PyTorchで日本語BERTによる文章分類&Attentionの可視化を実装してみた - Qiita
    sh19910711
    sh19910711 2021/09/20
    "先頭トークンのベクトルがどの単語にAttentionしているかを可視化"
  • 1