Learn more about Search Results bitsandbytes

「GPTQまたはbitsandbytes:LLMsのためにどの量子化方法を使用するか — Llama 2の例」

大規模言語モデル(LLM)がより多くのパラメータを持つようになるにつれて、メモリ使用量を削減するための新しい技術も提案されてきましたモデルを削減する最も効果的な方法の1つは、...

transformers、accelerate、bitsandbytesを使用した大規模トランスフォーマーの8ビット行列乗算へのやさしい入門

導入 言語モデルはますます大きくなっています。この執筆時点では、PaLMは540Bのパラメータを持ち、OPT、GPT-3、およびBLOOMは約176Bのパラメータを持ち、さらに大きなモデルに向かっています。以下は、いくつかの最近の言語モデルのサイズを示した図です。 したがって、これらのモデルは簡単にアクセス可能なデバイス上で実行するのが難しいです。例えば、BLOOM-176Bで推論を行うためには、8つの80GBのA100 GPU(各約15,000ドル)が必要です。BLOOM-176Bを微調整するには、これらのGPUが72台必要です!PaLMのようなさらに大きなモデルでは、さらに多くのリソースが必要です。 これらの巨大なモデルは多くのGPUで実行する必要があるため、モデルの性能を維持しながらこれらの要件を削減する方法を見つける必要があります。モデルサイズを縮小するためのさまざまな技術が開発されており、量子化や蒸留などの技術があります。 BLOOM-176Bのトレーニングを完了した後、HuggingFaceとBigScienceでは、この大きなモデルをより少ないGPUで簡単に実行できるようにする方法を探していました。BigScienceコミュニティを通じて、大規模モデルの予測パフォーマンスを低下させずに大規模モデルのメモリフットプリントを2倍に減らすInt8推論の研究について知らされました。すぐにこの研究に協力し始め、Hugging Faceのtransformersに完全に統合することで終了しました。このブログ記事では、Hugging FaceモデルのLLM.int8()統合を提供し、詳細を以下で説明します。研究についてもっと読みたい場合は、論文「LLM.int8(): 8-bit Matrix Multiplication for Transformers at Scale」を読んでください。 この記事では、この量子化技術の高レベルの概要を提供し、transformersライブラリへの統合の難しさを概説し、このパートナーシップの長期的な目標を立てます。 ここでは、なぜ大きなモデルが多くのメモリを使用するのか、BLOOMが350GBになる理由について、少しずつ基本的な前提を説明します。 機械学習で使用される一般的なデータ型 まず、機械学習の文脈では「精度」とも呼ばれる異なる浮動小数点データ型の基本的な理解から始めます。 モデルのサイズは、そのパラメータの数とその精度によって決まります。一般的には、float32、float16、またはbfloat16のいずれかのデータ型が使用されます(以下の画像は、https://blogs.nvidia.com/blog/2020/05/14/tensorfloat-32-precision-format/から引用されています)。 Float32(FP32)は、標準化されたIEEE 32ビット浮動小数点表現を表します。このデータ型では、幅広い浮動小数点数を表現することが可能です。FP32では、8ビットが「指数」に、23ビットが「仮数」に、1ビットが数値の符号に予約されています。さらに、ほとんどのハードウェアはFP32の操作と命令をサポートしています。 浮動小数点16ビット(FP16)のデータ型では、5ビットが指数に、10ビットが仮数に予約されています。これにより、FP16数の表現可能な範囲はFP32よりもはるかに低くなります。これにより、FP16数はオーバーフロー(非常に大きな数を表現しようとする)やアンダーフロー(非常に小さな数を表現する)のリスクにさらされます。 例えば、10k…

bitsandbytes、4ビットの量子化、そしてQLoRAを使用して、LLMをさらに利用しやすくする

LLMは大きいことで知られており、一般のハードウェア上で実行またはトレーニングすることは、ユーザーにとって大きな課題であり、アクセシビリティも困難です。私たちのLLM.int8ブログポストでは、LLM.int8論文の技術がtransformersでどのように統合され、bitsandbytesライブラリを使用しているかを示しています。私たちは、モデルをより多くの人々にアクセス可能にするために、再びbitsandbytesと協力することを決定し、ユーザーが4ビット精度でモデルを実行できるようにしました。これには、テキスト、ビジョン、マルチモーダルなどの異なるモダリティの多くのHFモデルが含まれます。ユーザーはまた、Hugging Faceのエコシステムからのツールを活用して4ビットモデルの上にアダプタをトレーニングすることもできます。これは、DettmersらによるQLoRA論文で今日紹介された新しい手法です。論文の概要は以下の通りです: QLoRAは、1つの48GBのGPUで65Bパラメータモデルをフィントゥーニングするためのメモリ使用量を十分に削減しながら、完全な16ビットのフィントゥーニングタスクのパフォーマンスを維持する効率的なフィントゥーニングアプローチです。QLoRAは、凍結された4ビット量子化された事前学習言語モデルをLow Rank Adapters(LoRA)に逆伝搬させます。私たちの最高のモデルファミリーであるGuanacoは、Vicunaベンチマークで以前に公開されたすべてのモデルを上回り、ChatGPTのパフォーマンスレベルの99.3%に達しますが、1つのGPUでのフィントゥーニングには24時間しかかかりません。QLoRAは、パフォーマンスを犠牲にすることなくメモリを節約するためのいくつかの革新を導入しています:(a)通常分布された重みに対して情報理論的に最適な新しいデータ型である4ビットNormalFloat(NF4)(b)量子化定数を量子化して平均メモリフットプリントを減らすためのダブル量子化、および(c)メモリスパイクを管理するためのページドオプティマイザ。私たちはQLoRAを使用して1,000以上のモデルをフィントゥーニングし、高品質のデータセットを使用した指示の追跡とチャットボットのパフォーマンスの詳細な分析を提供しています。これは通常のフィントゥーニングでは実行不可能である(例えば33Bおよび65Bパラメータモデル)モデルタイプ(LLaMA、T5)とモデルスケールを横断したものです。私たちの結果は、QLoRAによる小規模な高品質データセットでのフィントゥーニングが、以前のSoTAよりも小さいモデルを使用しても最先端の結果をもたらすことを示しています。さらに、ヒューマンとGPT-4の評価に基づいてチャットボットのパフォーマンスの詳細な分析を提供し、GPT-4の評価がヒューマンの評価に対して安価で合理的な代替手段であることを示しています。さらに、現在のチャットボットのベンチマークは、チャットボットのパフォーマンスレベルを正確に評価するための信頼性がないことがわかります。レモンピックされた分析では、GuanacoがChatGPTに比べてどこで失敗するかを示しています。私たちは4ビットトレーニングのためのCUDAカーネルを含む、すべてのモデルとコードを公開しています。 リソース このブログポストとリリースには、4ビットモデルとQLoRAを始めるためのいくつかのリソースがあります: 元の論文 基本的な使用法Google Colabノートブック-このノートブックでは、4ビットモデルとその変種を使用した推論の方法、およびGoogle ColabインスタンスでGPT-neo-X(20Bパラメータモデル)を実行する方法を示しています。 フィントゥーニングGoogle Colabノートブック-このノートブックでは、Hugging Faceエコシステムを使用してダウンストリームタスクで4ビットモデルをフィントゥーニングする方法を示しています。Google ColabインスタンスでGPT-neo-X 20Bをフィントゥーニングすることが可能であることを示しています。 論文の結果を再現するための元のリポジトリ Guanaco 33b playground-または以下のプレイグラウンドセクションをチェック はじめに モデルの精度と最も一般的なデータ型(float16、float32、bfloat16、int8)について詳しく知りたくない場合は、これらの概念の詳細について視覚化を含めた簡単な言葉で説明している私たちの最初のブログポストの紹介を注意深くお読みいただくことをお勧めします。 詳細については、このwikibookドキュメントを通じて浮動小数点表現の基本を読むことをお勧めします。 最近のQLoRA論文では、4ビットFloatと4ビットNormalFloatという異なるデータ型を探求しています。ここでは、理解しやすい4ビットFloatデータ型について説明します。…

「2023年、オープンLLMの年」

2023年には、大型言語モデル(Large Language Models、LLMs)への公衆の関心が急増しました。これにより、多くの人々がLLMsの定義と可能性を理解し始めたため、オープンソースとクローズドソースの議論も広範な聴衆に届くようになりました。Hugging Faceでは、オープンモデルに大いに興味を持っており、オープンモデルは研究の再現性を可能にし、コミュニティがAIモデルの開発に参加できるようにし、モデルのバイアスや制約をより簡単に評価できるようにし、チェックポイントの再利用によってフィールド全体の炭素排出量を低減するなど、多くの利点があります(その他の利点もあります)。 では、オープンLLMsの今年を振り返ってみましょう! 文章が長くなりすぎないようにするために、コードモデルには触れません。 Pretrained Large Language Modelの作り方 まず、大型言語モデルはどのようにして作られるのでしょうか?(もし既に知っている場合は、このセクションをスキップしてもかまいません) モデルのアーキテクチャ(コード)は、特定の実装と数学的な形状を示しています。モデルのすべてのパラメータと、それらが入力とどのように相互作用するかがリストとして表されます。現時点では、大部分の高性能なLLMsは「デコーダーのみ」トランスフォーマーアーキテクチャのバリエーションです(詳細は元のトランスフォーマーペーパーをご覧ください)。訓練データセットには、モデルが訓練された(つまり、パラメータが学習された)すべての例と文書が含まれています。したがって、具体的には学習されたパターンが含まれます。ほとんどの場合、これらの文書にはテキストが含まれており、自然言語(例:フランス語、英語、中国語)、プログラミング言語(例:Python、C)またはテキストとして表現できる構造化データ(例:MarkdownやLaTeXの表、方程式など)のいずれかです。トークナイザは、訓練データセットからテキストを数値に変換する方法を定義します(モデルは数学的な関数であり、したがって入力として数値が必要です)。トークン化は、テキストを「トークン」と呼ばれるサブユニットに変換することによって行われます(トークン化方法によっては単語、サブワード、または文字になる場合があります)。トークナイザの語彙サイズは、トークナイザが知っている異なるトークンの数を示しますが、一般的には32kから200kの間です。データセットのサイズは、これらの個々の「原子論的」単位のシーケンスに分割された後のトークンの数としてよく測定されます。最近のデータセットのサイズは、数千億から数兆のトークンに及ぶことがあります!訓練ハイパーパラメータは、モデルの訓練方法を定義します。新しい例ごとにパラメータをどれだけ変更すべきですか?モデルの更新速度はどのくらいですか? これらのパラメータが選択されたら、モデルを訓練するためには1)大量の計算パワーが必要であり、2)有能な(そして優しい)人々が訓練を実行し監視する必要があります。訓練自体は、アーキテクチャのインスタンス化(訓練用のハードウェア上での行列の作成)および上記のハイパーパラメータを使用して訓練データセット上の訓練アルゴリズムの実行からなります。その結果、モデルの重みが得られます。これらは学習後のモデルパラメータであり、オープンな事前学習モデルへのアクセスに関して多くの人々が話す内容です。これらの重みは、推論(つまり、新しい入力の予測やテキストの生成など)に使用することができます。 事前学習済みLLMsは、重みが公開されると特定のタスクに特化または適応することもあります。それらは、「ファインチューニング」と呼ばれるプロセスを介して、ユースケースやアプリケーションの出発点として使用されます。ファインチューニングでは、異なる(通常はより専門化された小規模な)データセット上でモデルに追加の訓練ステップを適用して、特定のアプリケーションに最適化します。このステップには、計算パワーのコストがかかりますが、モデルをゼロから訓練するよりも財政的および環境的にはるかにコストがかかりません。これは、高品質のオープンソースの事前学習モデルが非常に興味深い理由の一つです。コミュニティが限られたコンピューティング予算しか利用できない場合でも、自由に使用し、拡張することができます。 2022年 – サイズの競争からデータの競争へ 2023年以前、コミュニティで利用可能だったオープンモデルはありましたか? 2022年初頭まで、機械学習のトレンドは、モデルが大きければ(つまり、パラメータが多ければ)、性能が良くなるというものでした。特に、特定のサイズの閾値を超えるモデルは能力が向上するという考えがあり、これらの概念はemergent abilitiesとscaling lawsと呼ばれました。2022年に公開されたオープンソースの事前学習モデルは、主にこのパラダイムに従っていました。 BLOOM(BigScience Large Open-science…

「QLoRAを使ってLlama 2を微調整し、AWS Inferentia2を使用してAmazon SageMakerに展開する」

この記事では、パラメータ効率の良いファインチューニング(PEFT)手法を使用してLlama 2モデルを微調整し、AWS Inferentia2上でファインチューニングされたモデルを展開する方法を紹介します AWS Neuronソフトウェア開発キット(SDK)を使用してAWS Inferentia2デバイスにアクセスし、その高性能を活用しますその後、[…]の動力を得るために、大きなモデル推論コンテナを使用します

「ゼロから始めるLoRAの実装」

「LoRA(ローラ)は、既存の言語モデルを微調整するための効率的で軽量な方法を提供する、Low-Rank AdaptationまたはLow-Rank Adaptorsの頭字語ですこれには、BERTのようなマスクされた言語モデルも含まれます...」

ハグ顔(Hugging Face)での最新技術の組み合わせであるミクストラル(Mixtral)へようこそ

Mixtral 8x7bは、ミストラルが本日リリースした刺激的な大型言語モデルで、オープンアクセスモデルの最新技術基準を上回り、多くのベンチマークでGPT-3.5を凌駕しています。私たちは、MixtralをHugging Faceエコシステムに包括的に統合してのローンチをサポートすることに興奮しています🔥! 本日リリースされる機能と統合には以下があります: ハブ上のモデル、モデルカードとライセンス(Apache 2.0) 🤗 Transformers統合 推論エンドポイントとの統合 高速で効率的な本番推論のためのテキスト生成推論との統合 🤗 TRLを使用した単一のGPUでのMixtralの微調整の例 目次 Mixtral 8x7bとは何ですか 名前について プロンプト形式 分からないこと デモ 推論 🤗 Transformersを使用する テキスト生成推論を使用する 🤗…

「大規模言語モデルの微調整方法:ステップバイステップガイド」

2023年、アルパカ、ファルコン、ラマ2、およびGPT-4のような大規模言語モデル(LLM)の台頭は、人工知能の民主化の傾向を示しています

LangChain チートシート — すべての秘密を1ページにまとめました

作成されたワンページは、LangChainの基本をまとめたものですこの記事では、コードのセクションを進めて行き、LangChainで成功するために必要なスターターパッケージについて説明しますLangChainにおけるモデルは…

「あなたに適した量子化メソッドはどれですか?(GPTQ vs. GGUF vs. AWQ)」

昨年を通じて、私たちは大規模言語モデル(LLM)のワイルドウエストを目にしました新しいテクノロジーやモデルがどんどんリリースされていくスピードは驚くべきものでした!その結果、私たちはさまざまなものを持っています...

Find the right Blockchain Investment for you

Web 3.0 is coming, whether buy Coins, NFTs or just Coding, everyone can participate.

Advertising with us