From fc515ef9ed3362a05b7c46b77c3113c14897906a Mon Sep 17 00:00:00 2001 From: SeongWooChoi <46990061+nuatmochoi@users.noreply.github.com> Date: Thu, 24 Aug 2023 13:24:56 +0900 Subject: [PATCH 1/5] docs: ko: peft.mdx --- docs/source/ko/_toctree.yml | 2 + docs/source/ko/peft.md | 216 ++++++++++++++++++++++++++++++++++++ 2 files changed, 218 insertions(+) create mode 100644 docs/source/ko/peft.md diff --git a/docs/source/ko/_toctree.yml b/docs/source/ko/_toctree.yml index 04b1fdf57f4..be3f38ee0eb 100644 --- a/docs/source/ko/_toctree.yml +++ b/docs/source/ko/_toctree.yml @@ -19,6 +19,8 @@ title: 스크립트로 학습하기 - local: accelerate title: 🤗 Accelerate로 분산 학습 구성하기 + - local: peft + title: 🤗 PEFT로 어댑터 로드 및 학습하기 - local: model_sharing title: 만든 모델 공유하기 - local: transformers_agents diff --git a/docs/source/ko/peft.md b/docs/source/ko/peft.md new file mode 100644 index 00000000000..302b614e5f7 --- /dev/null +++ b/docs/source/ko/peft.md @@ -0,0 +1,216 @@ + + +# Load adapters with 🤗 PEFT + +[[open-in-colab]] + +[Parameter-Efficient Fine Tuning (PEFT)](https://huggingface.co/blog/peft) methods freeze the pretrained model parameters during fine-tuning and add a small number of trainable parameters (the adapters) on top of it. The adapters are trained to learn task-specific information. This approach has been shown to be very memory-efficient with lower compute usage while producing results comparable to a fully fine-tuned model. + +Adapters trained with PEFT are also usually an order of magnitude smaller than the full model, making it convenient to share, store, and load them. + +
+ +
The adapter weights for a OPTForCausalLM model stored on the Hub are only ~6MB compared to the full size of the model weights, which can be ~700MB.
+
+ +If you're interested in learning more about the 🤗 PEFT library, check out the [documentation](https://huggingface.co/docs/peft/index). + +## Setup + +Get started by installing 🤗 PEFT: + +```bash +pip install peft +``` + +If you want to try out the brand new features, you might be interested in installing the library from source: + +```bash +pip install git+https://github.com/huggingface/peft.git +``` + +## Supported PEFT models + +🤗 Transformers natively supports some PEFT methods, meaning you can load adapter weights stored locally or on the Hub and easily run or train them with a few lines of code. The following methods are supported: + +- [Low Rank Adapters](https://huggingface.co/docs/peft/conceptual_guides/lora) +- [IA3](https://huggingface.co/docs/peft/conceptual_guides/ia3) +- [AdaLoRA](https://arxiv.org/abs/2303.10512) + +If you want to use other PEFT methods, such as prompt learning or prompt tuning, or about the 🤗 PEFT library in general, please refer to the [documentation](https://huggingface.co/docs/peft/index). + + +## Load a PEFT adapter + +To load and use a PEFT adapter model from 🤗 Transformers, make sure the Hub repository or local directory contains an `adapter_config.json` file and the adapter weights, as shown in the example image above. Then you can load the PEFT adapter model using the `AutoModelFor` class. For example, to load a PEFT adapter model for causal language modeling: + +1. specify the PEFT model id +2. pass it to the [`AutoModelForCausalLM`] class + +```py +from transformers import AutoModelForCausalLM, AutoTokenizer + +peft_model_id = "ybelkada/opt-350m-lora" +model = AutoModelForCausalLM.from_pretrained(peft_model_id) +``` + + + +You can load a PEFT adapter with either an `AutoModelFor` class or the base model class like `OPTForCausalLM` or `LlamaForCausalLM`. + + + +You can also load a PEFT adapter by calling the `load_adapter` method: + +```py +from transformers import AutoModelForCausalLM, AutoTokenizer + +model_id = "facebook/opt-350m" +peft_model_id = "ybelkada/opt-350m-lora" + +model = AutoModelForCausalLM.from_pretrained(model_id) +model.load_adapter(peft_model_id) +``` + +## Load in 8bit or 4bit + +The `bitsandbytes` integration supports 8bit and 4bit precision data types, which are useful for loading large models because it saves memory (see the `bitsandbytes` integration [guide](./quantization#bitsandbytes-integration) to learn more). Add the `load_in_8bit` or `load_in_4bit` parameters to [`~PreTrainedModel.from_pretrained`] and set `device_map="auto"` to effectively distribute the model to your hardware: + +```py +from transformers import AutoModelForCausalLM, AutoTokenizer + +peft_model_id = "ybelkada/opt-350m-lora" +model = AutoModelForCausalLM.from_pretrained(peft_model_id, device_map="auto", load_in_8bit=True) +``` + +## Add a new adapter + +You can use [`~peft.PeftModel.add_adapter`] to add a new adapter to a model with an existing adapter as long as the new adapter is the same type as the current one. For example, if you have an existing LoRA adapter attached to a model: + +```py +from transformers import AutoModelForCausalLM, OPTForCausalLM, AutoTokenizer +from peft import PeftConfig + +model_id = "facebook/opt-350m" +model = AutoModelForCausalLM.from_pretrained(model_id) + +lora_config = LoraConfig( + target_modules=["q_proj", "k_proj"], + init_lora_weights=False +) + +model.add_adapter(lora_config, adapter_name="adapter_1") +``` + +To add a new adapter: + +```py +# attach new adapter with same config +model.add_adapter(lora_config, adapter_name="adapter_2") +``` + +Now you can use [`~peft.PeftModel.set_adapter`] to set which adapter to use: + +```py +# use adapter_1 +model.set_adapter("adapter_1") +output = model.generate(**inputs) +print(tokenizer.decode(output_disabled[0], skip_special_tokens=True)) + +# use adapter_2 +model.set_adapter("adapter_2") +output_enabled = model.generate(**inputs) +print(tokenizer.decode(output_enabled[0], skip_special_tokens=True)) +``` + +## Enable and disable adapters + +Once you've added an adapter to a model, you can enable or disable the adapter module. To enable the adapter module: + +```py +from transformers import AutoModelForCausalLM, OPTForCausalLM, AutoTokenizer +from peft import PeftConfig + +model_id = "facebook/opt-350m" +adapter_model_id = "ybelkada/opt-350m-lora" +tokenizer = AutoTokenizer.from_pretrained(model_id) +text = "Hello" +inputs = tokenizer(text, return_tensors="pt") + +model = AutoModelForCausalLM.from_pretrained(model_id) +peft_config = PeftConfig.from_pretrained(adapter_model_id) + +# to initiate with random weights +peft_config.init_lora_weights = False + +model.add_adapter(peft_config) +model.enable_adapters() +output = model.generate(**inputs) +``` + +To disable the adapter module: + +```py +model.disable_adapters() +output = model.generate(**inputs) +``` + +## Train a PEFT adapter + +PEFT adapters are supported by the [`Trainer`] class so that you can train an adapter for your specific use case. It only requires adding a few more lines of code. For example, to train a LoRA adapter: + + + +If you aren't familiar with fine-tuning a model with [`Trainer`], take a look at the [Fine-tune a pretrained model](training) tutorial. + + + +1. Define your adapter configuration with the task type and hyperparameters (see [`~peft.LoraConfig`] for more details about what the hyperparameters do). + +```py +from peft import LoraConfig + +peft_config = LoraConfig( + lora_alpha=16, + lora_dropout=0.1, + r=64, + bias="none", + task_type="CAUSAL_LM", +) +``` + +2. Add adapter to the model. + +```py +model.add_adapter(peft_config) +``` + +3. Now you can pass the model to [`Trainer`]! + +```py +trainer = Trainer(model=model, ...) +trainer.train() +``` + +To save your trained adapter and load it back: + +```py +model.save_pretrained(save_dir) +model = AutoModelForCausalLM.from_pretrained(save_dir) +``` + + From bffa310edc992327ae4b2705cf6973a5e86b8c75 Mon Sep 17 00:00:00 2001 From: SeongWooChoi <46990061+nuatmochoi@users.noreply.github.com> Date: Thu, 24 Aug 2023 13:40:21 +0900 Subject: [PATCH 2/5] feat: chatgpt draft --- docs/source/ko/peft.md | 84 +++++++++++++++++++++--------------------- 1 file changed, 42 insertions(+), 42 deletions(-) diff --git a/docs/source/ko/peft.md b/docs/source/ko/peft.md index 302b614e5f7..e62aba29484 100644 --- a/docs/source/ko/peft.md +++ b/docs/source/ko/peft.md @@ -9,52 +9,52 @@ specific language governing permissions and limitations under the License. rendered properly in your Markdown viewer. --> -# Load adapters with 🤗 PEFT +# 🤗 PEFT를 사용하여 어댑터 로드하기 [[load-adapters-with-peft]] -[[open-in-colab]] +[[Colab에서 열기]] -[Parameter-Efficient Fine Tuning (PEFT)](https://huggingface.co/blog/peft) methods freeze the pretrained model parameters during fine-tuning and add a small number of trainable parameters (the adapters) on top of it. The adapters are trained to learn task-specific information. This approach has been shown to be very memory-efficient with lower compute usage while producing results comparable to a fully fine-tuned model. +[Parameter-Efficient Fine Tuning (PEFT)](https://huggingface.co/blog/peft) 방법은 사전 훈련된 모델 매개변수를 미세 조정하는 동안 모델 매개변수를 고정하고 그 위에 훈련 가능한 매우 적은 수의 매개변수(어댑터)를 추가합니다. 어댑터는 작업별 정보를 학습하도록 훈련됩니다. 이 접근 방식은 전체로 미세 조정된 모델과 비교 가능한 결과를 생성하면서 메모리 효율적이며 더 낮은 컴퓨팅 리소스를 사용한다는 것이 입증되었습니다. -Adapters trained with PEFT are also usually an order of magnitude smaller than the full model, making it convenient to share, store, and load them. +PEFT로 훈련된 어댑터는 전체 모델 크기보다 일반적으로 한 순서 작으므로 공유, 저장 및 로드하기 편리합니다.
-
The adapter weights for a OPTForCausalLM model stored on the Hub are only ~6MB compared to the full size of the model weights, which can be ~700MB.
+
Hub에 저장된 OPTForCausalLM 모델의 어댑터 가중치는 전체 모델 가중치 크기인 ~700MB 대비 약 6MB입니다.
-If you're interested in learning more about the 🤗 PEFT library, check out the [documentation](https://huggingface.co/docs/peft/index). +🤗 PEFT 라이브러리에 대해 자세히 알아보려면 [문서](https://huggingface.co/docs/peft/index)를 확인하세요. -## Setup +## 설정 [[setup]] -Get started by installing 🤗 PEFT: +🤗 PEFT를 설치하여 시작하세요: ```bash pip install peft ``` -If you want to try out the brand new features, you might be interested in installing the library from source: +새로운 기능을 시도하려면 라이브러리를 소스에서 설치하는 것이 관심을 끌 수 있습니다: ```bash pip install git+https://github.com/huggingface/peft.git ``` -## Supported PEFT models +## 지원되는 PEFT 모델 [[supported-peft-models]] -🤗 Transformers natively supports some PEFT methods, meaning you can load adapter weights stored locally or on the Hub and easily run or train them with a few lines of code. The following methods are supported: +🤗 Transformers는 일부 PEFT 방법을 네이티브로 지원하며, 로컬로 저장된 어댑터 가중치를 로드하거나 Hub에서 쉽게 실행하거나 훈련할 수 있습니다. 다음 방법을 지원합니다: - [Low Rank Adapters](https://huggingface.co/docs/peft/conceptual_guides/lora) - [IA3](https://huggingface.co/docs/peft/conceptual_guides/ia3) - [AdaLoRA](https://arxiv.org/abs/2303.10512) -If you want to use other PEFT methods, such as prompt learning or prompt tuning, or about the 🤗 PEFT library in general, please refer to the [documentation](https://huggingface.co/docs/peft/index). +🤗 PEFT와 관련된 다른 방법(예: 프롬프트 학습 또는 프롬프트 튜닝) 또는 일반적인 🤗 PEFT 라이브러리에 대해 자세히 알아보려면 [문서](https://huggingface.co/docs/peft/index)를 참조하세요. -## Load a PEFT adapter +## PEFT 어댑터 로드 [[load-a-peft-adapter]] -To load and use a PEFT adapter model from 🤗 Transformers, make sure the Hub repository or local directory contains an `adapter_config.json` file and the adapter weights, as shown in the example image above. Then you can load the PEFT adapter model using the `AutoModelFor` class. For example, to load a PEFT adapter model for causal language modeling: +🤗 Transformers에서 PEFT 어댑터 모델을 로드하고 사용하려면 Hub 저장소나 로컬 디렉터리에 `adapter_config.json` 파일과 어댑터 가중치가 포함되어 있는지 확인하십시오. 그런 다음 `AutoModelFor` 클래스를 사용하여 PEFT 어댑터 모델을 로드할 수 있습니다. 예를 들어 인과 언어 모델용 PEFT 어댑터 모델을 로드하려면 다음 단계를 따르십시오: -1. specify the PEFT model id -2. pass it to the [`AutoModelForCausalLM`] class +1. PEFT 모델 ID를 지정하십시오. +2. [`AutoModelForCausalLM`] 클래스에 전달하십시오. ```py from transformers import AutoModelForCausalLM, AutoTokenizer @@ -63,13 +63,13 @@ peft_model_id = "ybelkada/opt-350m-lora" model = AutoModelForCausalLM.from_pretrained(peft_model_id) ``` - +<팁> -You can load a PEFT adapter with either an `AutoModelFor` class or the base model class like `OPTForCausalLM` or `LlamaForCausalLM`. +`AutoModelFor` 클래스나 기본 모델 클래스(예: `OPTForCausalLM` 또는 `LlamaForCausalLM`) 중 하나를 사용하여 PEFT 어댑터를 로드할 수 있습니다. - + -You can also load a PEFT adapter by calling the `load_adapter` method: +`load_adapter` 메서드를 호출하여 PEFT 어댑터를로드할 수도 있습니다. ```py from transformers import AutoModelForCausalLM, AutoTokenizer @@ -81,9 +81,9 @@ model = AutoModelForCausalLM.from_pretrained(model_id) model.load_adapter(peft_model_id) ``` -## Load in 8bit or 4bit +## 8비트 또는 4비트로 로드 [[load-in-8bit-or-4bit]] -The `bitsandbytes` integration supports 8bit and 4bit precision data types, which are useful for loading large models because it saves memory (see the `bitsandbytes` integration [guide](./quantization#bitsandbytes-integration) to learn more). Add the `load_in_8bit` or `load_in_4bit` parameters to [`~PreTrainedModel.from_pretrained`] and set `device_map="auto"` to effectively distribute the model to your hardware: +`bitsandbytes` 통합은 8비트와 4비트 정밀도 데이터 유형을 지원하므로 큰 모델을로드할 때 유용합니다. 이것은 메모리를 절약합니다. 모델을 하드웨어에 효과적으로 분배하려면 [`~PreTrainedModel.from_pretrained`]에 `load_in_8bit` 또는 `load_in_4bit` 매개변수를 추가하고 `device_map="auto"`를 설정하십시오: ```py from transformers import AutoModelForCausalLM, AutoTokenizer @@ -92,9 +92,9 @@ peft_model_id = "ybelkada/opt-350m-lora" model = AutoModelForCausalLM.from_pretrained(peft_model_id, device_map="auto", load_in_8bit=True) ``` -## Add a new adapter +## 새 어댑터 추가 [[add-a-new-adapter]] -You can use [`~peft.PeftModel.add_adapter`] to add a new adapter to a model with an existing adapter as long as the new adapter is the same type as the current one. For example, if you have an existing LoRA adapter attached to a model: +기존 어댑터가있는 모델에 새 어댑터를 추가하려면 [`~peft.PeftModel.add_adapter`]를 사용할 수 있습니다. 새 어댑터가 현재 어댑터와 동일한 유형인 한 추가할 수 있습니다. 예를 들어 모델에 연결된 기존 LoRA 어댑터가있는 경우: ```py from transformers import AutoModelForCausalLM, OPTForCausalLM, AutoTokenizer @@ -111,14 +111,14 @@ lora_config = LoraConfig( model.add_adapter(lora_config, adapter_name="adapter_1") ``` -To add a new adapter: +새 어댑터를 추가하려면: ```py # attach new adapter with same config model.add_adapter(lora_config, adapter_name="adapter_2") ``` -Now you can use [`~peft.PeftModel.set_adapter`] to set which adapter to use: +이제 [`~peft.PeftModel.set_adapter`]를 사용하여 어댑터를 사용할 어댑터로 설정할 수 있습니다: ```py # use adapter_1 @@ -132,9 +132,9 @@ output_enabled = model.generate(**inputs) print(tokenizer.decode(output_enabled[0], skip_special_tokens=True)) ``` -## Enable and disable adapters +## 어댑터 활성화 및 비활성화 [[enable-and-disable-adapters]] -Once you've added an adapter to a model, you can enable or disable the adapter module. To enable the adapter module: +모델에 어댑터를 추가한 후 어댑터 모듈을 활성화 또는 비활성화할 수 있습니다. 어댑터 모듈을 활성화하려면: ```py from transformers import AutoModelForCausalLM, OPTForCausalLM, AutoTokenizer @@ -157,24 +157,24 @@ model.enable_adapters() output = model.generate(**inputs) ``` -To disable the adapter module: +어댑터 모듈을 비활성화하려면: ```py model.disable_adapters() output = model.generate(**inputs) ``` -## Train a PEFT adapter +## PEFT 어댑터 훈련 [[train-a-peft-adapter]] -PEFT adapters are supported by the [`Trainer`] class so that you can train an adapter for your specific use case. It only requires adding a few more lines of code. For example, to train a LoRA adapter: +PEFT 어댑터는 [`Trainer`] 클래스에서 지원되므로 특정 사용 사례에 대한 어댑터를 훈련할 수 있습니다. 몇 줄의 코드를 추가하기만 하면됩니다. 예를 들어 LoRA 어댑터를 훈련하려면 다음과 같습니다: - +<팁> -If you aren't familiar with fine-tuning a model with [`Trainer`], take a look at the [Fine-tune a pretrained model](training) tutorial. +[`Trainer`]를 사용하여 모델을 미세 조정하는 것이 익숙하지 않다면 [미세 조정된 모델을 미세 조정하기](training) 튜토리얼을 확인하세요. - + -1. Define your adapter configuration with the task type and hyperparameters (see [`~peft.LoraConfig`] for more details about what the hyperparameters do). +1. 과제 유형 및 하이퍼파라미터를 지정하여 어댑터 구성을 정의합니다(하이퍼파라미터에 대한 자세한 내용은 [`~peft.LoraConfig`]를 참조하세요). ```py from peft import LoraConfig @@ -188,20 +188,20 @@ peft_config = LoraConfig( ) ``` -2. Add adapter to the model. +2. 모델에 어댑터를 추가합니다. ```py model.add_adapter(peft_config) ``` -3. Now you can pass the model to [`Trainer`]! +3. 이제 모델을 [`Trainer`]에 전달할 수 있습니다! ```py trainer = Trainer(model=model, ...) trainer.train() ``` -To save your trained adapter and load it back: +훈련한 어댑터를 저장하고 다시로드하려면: ```py model.save_pretrained(save_dir) @@ -210,7 +210,7 @@ model = AutoModelForCausalLM.from_pretrained(save_dir) +- PEFT 문서에 대한 링크 +- Trainer +- 8비트 / 4비트 예제? +--> \ No newline at end of file From 43664ef04a88aa9c5bfb5f0d218028f85d8a68db Mon Sep 17 00:00:00 2001 From: SeongWooChoi <46990061+nuatmochoi@users.noreply.github.com> Date: Thu, 24 Aug 2023 14:18:07 +0900 Subject: [PATCH 3/5] fix: manual edits --- docs/source/ko/peft.md | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/docs/source/ko/peft.md b/docs/source/ko/peft.md index e62aba29484..2b430d586ba 100644 --- a/docs/source/ko/peft.md +++ b/docs/source/ko/peft.md @@ -9,13 +9,13 @@ specific language governing permissions and limitations under the License. rendered properly in your Markdown viewer. --> -# 🤗 PEFT를 사용하여 어댑터 로드하기 [[load-adapters-with-peft]] +# 🤗 PEFT를 사용하여 어댑터 가져오기 [[load-adapters-with-peft]] [[Colab에서 열기]] -[Parameter-Efficient Fine Tuning (PEFT)](https://huggingface.co/blog/peft) 방법은 사전 훈련된 모델 매개변수를 미세 조정하는 동안 모델 매개변수를 고정하고 그 위에 훈련 가능한 매우 적은 수의 매개변수(어댑터)를 추가합니다. 어댑터는 작업별 정보를 학습하도록 훈련됩니다. 이 접근 방식은 전체로 미세 조정된 모델과 비교 가능한 결과를 생성하면서 메모리 효율적이며 더 낮은 컴퓨팅 리소스를 사용한다는 것이 입증되었습니다. +[Parameter-Efficient Fine Tuning (PEFT)](https://huggingface.co/blog/peft) 방법은 사전 훈련된 모델 매개변수를 미세 조정하는 동안 모델 매개변수를 고정하고 그 위에 훈련 가능한 매우 적은 수의 매개변수(어댑터)를 추가합니다. 어댑터는 작업별 정보를 학습하도록 훈련됩니다. 이 접근 방식은 전체로 사전 훈련된 모델과 비교 가능한 결과를 생성하면서 메모리 효율적이며 더 낮은 컴퓨팅 리소스를 사용한다는 것이 입증되었습니다. -PEFT로 훈련된 어댑터는 전체 모델 크기보다 일반적으로 한 순서 작으므로 공유, 저장 및 로드하기 편리합니다. +PEFT로 훈련된 어댑터는 전체 모델 크기보다 일반적으로 한 순서 작으므로 공유, 저장 및 가져오기 편리합니다.
@@ -32,7 +32,7 @@ PEFT로 훈련된 어댑터는 전체 모델 크기보다 일반적으로 한 pip install peft ``` -새로운 기능을 시도하려면 라이브러리를 소스에서 설치하는 것이 관심을 끌 수 있습니다: +새로운 기능을 시도할 때 라이브러리를 소스로부터 설치하는 데 관심이 있을 수 있습니다: ```bash pip install git+https://github.com/huggingface/peft.git @@ -40,18 +40,18 @@ pip install git+https://github.com/huggingface/peft.git ## 지원되는 PEFT 모델 [[supported-peft-models]] -🤗 Transformers는 일부 PEFT 방법을 네이티브로 지원하며, 로컬로 저장된 어댑터 가중치를 로드하거나 Hub에서 쉽게 실행하거나 훈련할 수 있습니다. 다음 방법을 지원합니다: +🤗 Transformers는 기본적으로 일부 PEFT 방법을 지원하며, 로컬로 저장된 어댑터 가중치를 가져오거나 Hub에서 쉽게 실행하거나 훈련할 수 있습니다. 다음 방법을 지원합니다: - [Low Rank Adapters](https://huggingface.co/docs/peft/conceptual_guides/lora) - [IA3](https://huggingface.co/docs/peft/conceptual_guides/ia3) - [AdaLoRA](https://arxiv.org/abs/2303.10512) -🤗 PEFT와 관련된 다른 방법(예: 프롬프트 학습 또는 프롬프트 튜닝) 또는 일반적인 🤗 PEFT 라이브러리에 대해 자세히 알아보려면 [문서](https://huggingface.co/docs/peft/index)를 참조하세요. +🤗 PEFT와 관련된 다른 방법(예: 프롬프트 훈련 또는 프롬프트 튜닝) 또는 일반적인 🤗 PEFT 라이브러리에 대해 자세히 알아보려면 [문서](https://huggingface.co/docs/peft/index)를 참조하세요. -## PEFT 어댑터 로드 [[load-a-peft-adapter]] +## PEFT 어댑터 가져오기 [[load-a-peft-adapter]] -🤗 Transformers에서 PEFT 어댑터 모델을 로드하고 사용하려면 Hub 저장소나 로컬 디렉터리에 `adapter_config.json` 파일과 어댑터 가중치가 포함되어 있는지 확인하십시오. 그런 다음 `AutoModelFor` 클래스를 사용하여 PEFT 어댑터 모델을 로드할 수 있습니다. 예를 들어 인과 언어 모델용 PEFT 어댑터 모델을 로드하려면 다음 단계를 따르십시오: +🤗 Transformers에서 PEFT 어댑터 모델을 가져오고 사용하려면 Hub 저장소나 로컬 디렉터리에 `adapter_config.json` 파일과 어댑터 가중치가 포함되어 있는지 확인하십시오. 그런 다음 `AutoModelFor` 클래스를 사용하여 PEFT 어댑터 모델을 가져올 수 있습니다. 예를 들어 인과 관계 언어 모델용 PEFT 어댑터 모델을 가져오려면 다음 단계를 따르십시오: 1. PEFT 모델 ID를 지정하십시오. 2. [`AutoModelForCausalLM`] 클래스에 전달하십시오. @@ -63,13 +63,13 @@ peft_model_id = "ybelkada/opt-350m-lora" model = AutoModelForCausalLM.from_pretrained(peft_model_id) ``` -<팁> + -`AutoModelFor` 클래스나 기본 모델 클래스(예: `OPTForCausalLM` 또는 `LlamaForCausalLM`) 중 하나를 사용하여 PEFT 어댑터를 로드할 수 있습니다. +`AutoModelFor` 클래스나 기본 모델 클래스(예: `OPTForCausalLM` 또는 `LlamaForCausalLM`) 중 하나를 사용하여 PEFT 어댑터를 가져올 수 있습니다. - + -`load_adapter` 메서드를 호출하여 PEFT 어댑터를로드할 수도 있습니다. +`load_adapter` 메소드를 호출하여 PEFT 어댑터를 가져올 수도 있습니다. ```py from transformers import AutoModelForCausalLM, AutoTokenizer @@ -81,9 +81,9 @@ model = AutoModelForCausalLM.from_pretrained(model_id) model.load_adapter(peft_model_id) ``` -## 8비트 또는 4비트로 로드 [[load-in-8bit-or-4bit]] +## 8비트 또는 4비트로 가져오기 [[load-in-8bit-or-4bit]] -`bitsandbytes` 통합은 8비트와 4비트 정밀도 데이터 유형을 지원하므로 큰 모델을로드할 때 유용합니다. 이것은 메모리를 절약합니다. 모델을 하드웨어에 효과적으로 분배하려면 [`~PreTrainedModel.from_pretrained`]에 `load_in_8bit` 또는 `load_in_4bit` 매개변수를 추가하고 `device_map="auto"`를 설정하십시오: +`bitsandbytes` 통합은 8비트와 4비트 정밀도 데이터 유형을 지원하므로 큰 모델을 가져올 때 유용하며, 메모리를 절약합니다. 모델을 하드웨어에 효과적으로 분배하려면 [`~PreTrainedModel.from_pretrained`]에 `load_in_8bit` 또는 `load_in_4bit` 매개변수를 추가하고 `device_map="auto"`를 설정하십시오: ```py from transformers import AutoModelForCausalLM, AutoTokenizer @@ -94,7 +94,7 @@ model = AutoModelForCausalLM.from_pretrained(peft_model_id, device_map="auto", l ## 새 어댑터 추가 [[add-a-new-adapter]] -기존 어댑터가있는 모델에 새 어댑터를 추가하려면 [`~peft.PeftModel.add_adapter`]를 사용할 수 있습니다. 새 어댑터가 현재 어댑터와 동일한 유형인 한 추가할 수 있습니다. 예를 들어 모델에 연결된 기존 LoRA 어댑터가있는 경우: +기존 어댑터가 있는 모델에 새 어댑터를 추가하려면 [`~peft.PeftModel.add_adapter`]를 사용할 수 있습니다. 새 어댑터가 현재 어댑터와 동일한 유형이면 추가할 수 있습니다. 예를 들어 모델에 연결된 기존 LoRA 어댑터가 있는 경우: ```py from transformers import AutoModelForCausalLM, OPTForCausalLM, AutoTokenizer @@ -166,15 +166,15 @@ output = model.generate(**inputs) ## PEFT 어댑터 훈련 [[train-a-peft-adapter]] -PEFT 어댑터는 [`Trainer`] 클래스에서 지원되므로 특정 사용 사례에 대한 어댑터를 훈련할 수 있습니다. 몇 줄의 코드를 추가하기만 하면됩니다. 예를 들어 LoRA 어댑터를 훈련하려면 다음과 같습니다: +PEFT 어댑터는 [`Trainer`] 클래스에서 지원되므로 특정 사용 사례에 대한 어댑터를 훈련할 수 있습니다. 몇 줄의 코드를 추가하기만 하면 됩니다. 예를 들어 LoRA 어댑터를 훈련하려면 다음과 같습니다: -<팁> + [`Trainer`]를 사용하여 모델을 미세 조정하는 것이 익숙하지 않다면 [미세 조정된 모델을 미세 조정하기](training) 튜토리얼을 확인하세요. - + -1. 과제 유형 및 하이퍼파라미터를 지정하여 어댑터 구성을 정의합니다(하이퍼파라미터에 대한 자세한 내용은 [`~peft.LoraConfig`]를 참조하세요). +1. 작업 유형 및 하이퍼파라미터를 지정하여 어댑터 구성을 정의합니다. 하이퍼파라미터에 대한 자세한 내용은 [`~peft.LoraConfig`]를 참조하세요. ```py from peft import LoraConfig @@ -201,7 +201,7 @@ trainer = Trainer(model=model, ...) trainer.train() ``` -훈련한 어댑터를 저장하고 다시로드하려면: +훈련한 어댑터를 저장하고 다시 가져오려면: ```py model.save_pretrained(save_dir) From 633f26c61c711353d9643098a423d612bbe5bd67 Mon Sep 17 00:00:00 2001 From: SeongWooChoi <46990061+nuatmochoi@users.noreply.github.com> Date: Fri, 25 Aug 2023 13:27:16 +0900 Subject: [PATCH 4/5] fix: resolve suggestions Co-authored-by: Wonhyeong Seo Co-authored-by: Steven Liu <59462357+stevhliu@users.noreply.github.com> Co-authored-by: heuristicwave <31366038+heuristicwave@users.noreply.github.com> --- docs/source/ko/peft.md | 29 +++++++++++------------------ 1 file changed, 11 insertions(+), 18 deletions(-) diff --git a/docs/source/ko/peft.md b/docs/source/ko/peft.md index 2b430d586ba..653d8639449 100644 --- a/docs/source/ko/peft.md +++ b/docs/source/ko/peft.md @@ -9,17 +9,17 @@ specific language governing permissions and limitations under the License. rendered properly in your Markdown viewer. --> -# 🤗 PEFT를 사용하여 어댑터 가져오기 [[load-adapters-with-peft]] +# 🤗 PEFT로 어댑터 가져오기 [[load-adapters-with-peft]] -[[Colab에서 열기]] +[[open-in-colab]] -[Parameter-Efficient Fine Tuning (PEFT)](https://huggingface.co/blog/peft) 방법은 사전 훈련된 모델 매개변수를 미세 조정하는 동안 모델 매개변수를 고정하고 그 위에 훈련 가능한 매우 적은 수의 매개변수(어댑터)를 추가합니다. 어댑터는 작업별 정보를 학습하도록 훈련됩니다. 이 접근 방식은 전체로 사전 훈련된 모델과 비교 가능한 결과를 생성하면서 메모리 효율적이며 더 낮은 컴퓨팅 리소스를 사용한다는 것이 입증되었습니다. +[Parameter-Efficient Fine Tuning (PEFT)](https://huggingface.co/blog/peft) 방법은 사전훈련된 모델의 매개변수를 미세 조정 중 고정시키고, 그 위에 훈련할 수 있는 매우 적은 수의 매개변수(어댑터)를 추가합니다. 어댑터는 작업별 정보를 학습하도록 훈련됩니다. 이 접근 방식은 완전히 미세 조정된 모델에 필적하는 결과를 생성하면서, 메모리 효율적이고 비교적 적은 컴퓨팅 리소스를 사용합니다. -PEFT로 훈련된 어댑터는 전체 모델 크기보다 일반적으로 한 순서 작으므로 공유, 저장 및 가져오기 편리합니다. +또한 PEFT로 훈련된 어댑터는 일반적으로 전체 모델보다 훨씬 작기 때문에 공유, 저장 및 가져오기가 편리합니다.
-
Hub에 저장된 OPTForCausalLM 모델의 어댑터 가중치는 전체 모델 가중치 크기인 ~700MB 대비 약 6MB입니다.
+
Hub에 저장된 OPTForCausalLM 모델의 어댑터 가중치는 최대 700MB에 달하는 모델 가중치의 전체 크기에 비해 약 6MB에 불과합니다.
🤗 PEFT 라이브러리에 대해 자세히 알아보려면 [문서](https://huggingface.co/docs/peft/index)를 확인하세요. @@ -32,7 +32,7 @@ PEFT로 훈련된 어댑터는 전체 모델 크기보다 일반적으로 한 pip install peft ``` -새로운 기능을 시도할 때 라이브러리를 소스로부터 설치하는 데 관심이 있을 수 있습니다: +새로운 기능을 사용해보고 싶다면, 다음 소스에서 라이브러리를 설치하는 것이 좋습니다: ```bash pip install git+https://github.com/huggingface/peft.git @@ -40,7 +40,7 @@ pip install git+https://github.com/huggingface/peft.git ## 지원되는 PEFT 모델 [[supported-peft-models]] -🤗 Transformers는 기본적으로 일부 PEFT 방법을 지원하며, 로컬로 저장된 어댑터 가중치를 가져오거나 Hub에서 쉽게 실행하거나 훈련할 수 있습니다. 다음 방법을 지원합니다: +🤗 Transformers는 기본적으로 일부 PEFT 방법을 지원하며, 로컬이나 Hub에 저장된 어댑터 가중치를 가져오고 몇 줄의 코드만으로 쉽게 실행하거나 훈련할 수 있습니다. 다음 방법을 지원합니다: - [Low Rank Adapters](https://huggingface.co/docs/peft/conceptual_guides/lora) - [IA3](https://huggingface.co/docs/peft/conceptual_guides/ia3) @@ -83,7 +83,7 @@ model.load_adapter(peft_model_id) ## 8비트 또는 4비트로 가져오기 [[load-in-8bit-or-4bit]] -`bitsandbytes` 통합은 8비트와 4비트 정밀도 데이터 유형을 지원하므로 큰 모델을 가져올 때 유용하며, 메모리를 절약합니다. 모델을 하드웨어에 효과적으로 분배하려면 [`~PreTrainedModel.from_pretrained`]에 `load_in_8bit` 또는 `load_in_4bit` 매개변수를 추가하고 `device_map="auto"`를 설정하십시오: +`bitsandbytes` 통합은 8비트와 4비트 정밀도 데이터 유형을 지원하므로 큰 모델을 가져올 때 유용하면서 메모리도 절약합니다. 모델을 하드웨어에 효과적으로 분배하려면 [`~PreTrainedModel.from_pretrained`]에 `load_in_8bit` 또는 `load_in_4bit` 매개변수를 추가하고 `device_map="auto"`를 설정하세요: ```py from transformers import AutoModelForCausalLM, AutoTokenizer @@ -94,7 +94,7 @@ model = AutoModelForCausalLM.from_pretrained(peft_model_id, device_map="auto", l ## 새 어댑터 추가 [[add-a-new-adapter]] -기존 어댑터가 있는 모델에 새 어댑터를 추가하려면 [`~peft.PeftModel.add_adapter`]를 사용할 수 있습니다. 새 어댑터가 현재 어댑터와 동일한 유형이면 추가할 수 있습니다. 예를 들어 모델에 연결된 기존 LoRA 어댑터가 있는 경우: +새 어댑터가 현재 어댑터와 동일한 유형인 경우에 한해 기존 어댑터가 있는 모델에 새 어댑터를 추가하려면 [`~peft.PeftModel.add_adapter`]를 사용할 수 있습니다. 예를 들어 모델에 기존 LoRA 어댑터가 연결되어 있는 경우: ```py from transformers import AutoModelForCausalLM, OPTForCausalLM, AutoTokenizer @@ -166,11 +166,11 @@ output = model.generate(**inputs) ## PEFT 어댑터 훈련 [[train-a-peft-adapter]] -PEFT 어댑터는 [`Trainer`] 클래스에서 지원되므로 특정 사용 사례에 대한 어댑터를 훈련할 수 있습니다. 몇 줄의 코드를 추가하기만 하면 됩니다. 예를 들어 LoRA 어댑터를 훈련하려면 다음과 같습니다: +PEFT 어댑터는 [`Trainer`] 클래스에서 지원되므로 특정 사용 사례에 맞게 어댑터를 훈련할 수 있습니다. 몇 줄의 코드를 추가하기만 하면 됩니다. 예를 들어 LoRA 어댑터를 훈련하려면: -[`Trainer`]를 사용하여 모델을 미세 조정하는 것이 익숙하지 않다면 [미세 조정된 모델을 미세 조정하기](training) 튜토리얼을 확인하세요. +[`Trainer`]를 사용하여 모델을 미세 조정하는 것이 익숙하지 않다면 [사전 훈련된 모델을 미세 조정하기](training) 튜토리얼을 확인하세요. @@ -207,10 +207,3 @@ trainer.train() model.save_pretrained(save_dir) model = AutoModelForCausalLM.from_pretrained(save_dir) ``` - - \ No newline at end of file From 94673840973f8b5fd41bc88daf1e4ad75708afa8 Mon Sep 17 00:00:00 2001 From: SeongWooChoi <46990061+nuatmochoi@users.noreply.github.com> Date: Sat, 26 Aug 2023 16:53:52 +0900 Subject: [PATCH 5/5] fix: resolve suggestions Co-authored-by: Sohyun Sim <96299403+sim-so@users.noreply.github.com> --- docs/source/ko/peft.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/ko/peft.md b/docs/source/ko/peft.md index 653d8639449..90327e62c27 100644 --- a/docs/source/ko/peft.md +++ b/docs/source/ko/peft.md @@ -170,7 +170,7 @@ PEFT 어댑터는 [`Trainer`] 클래스에서 지원되므로 특정 사용 사 -[`Trainer`]를 사용하여 모델을 미세 조정하는 것이 익숙하지 않다면 [사전 훈련된 모델을 미세 조정하기](training) 튜토리얼을 확인하세요. +[`Trainer`]를 사용하여 모델을 미세 조정하는 것이 익숙하지 않다면 [사전훈련된 모델을 미세 조정하기](training) 튜토리얼을 확인하세요.