# 명령줄 

다음은 🤗 Accelerate에서 사용할 수 있는 모든 명령어와 해당 매개변수 목록입니다

## accelerate config

**명령**:

`accelerate config` 또는 `accelerate-config`

학습 시스템의 `default_config.yml` 설정 파일을 생성하고 저장하기 위해 일련의 프롬프트를 실행합니다. 항상 머신에서 가장 먼저 실행해야 합니다.

**사용법**:

```bash
accelerate config [arguments]
```

**선택 인자**:
* `--config_file CONFIG_FILE` (`str`) -- 설정 파일을 저장할 경로입니다. 기본값은 캐시 위치에 있는 `HF_HOME` 환경 변수의 값 뒤에 'accelerate'가 붙은 이름의 default_config.yaml 파일입니다. 해당 환경 변수가 없으면 캐시 디렉터리(`~/.cache` 또는 `XDG_CACHE_HOME`의 값) 뒤에 `huggingface`가 붙은 경로가 사용됩니다.
* `-h`, `--help` (`bool`) -- 도움말 메시지를 표시하고 종료합니다

## accelerate config default

**명령**:

`accelerate config default` 또는 `accelerate-config default`

Accelerate의 기본 설정 파일을 몇 가지 플래그만 설정하여 생성합니다.

**사용법**:

```bash
accelerate config default [arguments]
```

**선택 인자**:
* `--config_file CONFIG_FILE` (`str`) -- 설정 파일을 저장할 경로입니다. 기본값은 캐시 위치에 있는 `HF_HOME` 환경 변수의 값 뒤에 'accelerate'가 붙은 이름의 default_config.yaml 파일입니다. 해당 환경 변수가 없으면 캐시 디렉터리(`~/.cache` 또는 `XDG_CACHE_HOME`의 값) 뒤에 `huggingface`가 붙은 경로가 사용됩니다.

* `-h`, `--help` (`bool`) -- 도움말 메시지를 표시하고 종료합니다
* `--mixed_precision {no,fp16,bf16}` (`str`) -- 혼합 정밀도 학습을 사용할지 여부입니다. FP16과 BF16(bfloat16) 학습 중 하나를 선택합니다. BF16 학습은 Nvidia Ampere GPU와 PyTorch 1.10 이상에서만 지원됩니다.

## accelerate config update

**명령**:

`accelerate config update` 또는 `accelerate-config update`

…

**사용법**:

```bash
accelerate config update [arguments]
```

**선택 인자**:
* `--config_file CONFIG_FILE` (`str`) -- 업데이트할 config file의 경로입니다. 기본값은 캐시 위치에 있는 default_config.yaml이라는 이름의 파일이며, 이는 환경 변수 `HF_HOME`의 값 뒤에 'accelerate'가 붙은 경로입니다. 해당 환경 변수가 없으면 캐시 디렉터리(`~/.cache` 또는 `XDG_CACHE_HOME`의 값) 뒤에 `huggingface`가 붙은 경로가 됩니다.

* `-h`, `--help` (`bool`) -- 도움말 메시지를 표시하고 종료합니다

## accelerate env

**명령**:

`accelerate env` 또는 `accelerate-env` 또는 `python -m accelerate.commands.env`

전달된 🤗 Accelerate 구성 파일의 내용을 나열합니다. [GitHub 저장소](https://github.com/huggingface/accelerate)에 이슈를 열 때 항상 사용해야 합니다.

**사용법**:

```bash
accelerate env [arguments]
```

**선택 인자**:
* `--config_file CONFIG_FILE` (`str`) -- 설정 파일을 저장할 경로입니다. 기본값은 캐시 위치에 있는 `HF_HOME` 환경 변수의 값 뒤에 'accelerate'가 붙은 이름의 default_config.yaml 파일입니다. 해당 환경 변수가 없으면 캐시 디렉터리(`~/.cache` 또는 `XDG_CACHE_HOME`의 값) 뒤에 `huggingface`가 붙은 경로가 사용됩니다.
* `-h`, `--help` (`bool`) -- 도움말 메시지를 표시하고 종료합니다

## accelerate launch

**명령**:

`accelerate launch` 또는 `accelerate-launch` 또는 `python -m accelerate.commands.launch`

…

**사용법**:

```bash
accelerate launch [arguments] {training_script} --{training_script-argument-1} --{training_script-argument-2} ...
```

**위치 인자**:

- `{training_script}` -- 병렬로 실행할 스크립트의 전체 경로
- `--{training_script-argument-1}` -- 학습 스크립트의 인자

**선택 인자**:

* `-h`, `--help` (`bool`) -- 도움말 메시지를 표시하고 종료합니다
* `--config_file CONFIG_FILE` (`str`)-- 런칭 스크립트의 기본값에 사용할 설정 파일입니다.
* `-m`, `--module` (`bool`) -- 각 프로세스가 런 스크립트를 Python 모듈로 해석하도록 변경하여, 'python -m'과 동일한 동작으로 실행합니다.
* `--no_python` (`bool`) -- 학습 스크립트 앞에 'python'을 붙이는 것을 건너뜁니다. 스크립트를 직접 실행합니다. 스크립트가 Python 스크립트가 아닌 경우 유용합니다.
* `--debug` (`bool`) -- 오류 발생 시 torch.distributed 스택 트레이스를 출력할지 여부.
* `-q`, `--quiet` (`bool`) -- launch 스택 트레이스에서 서브프로세스 오류를 억제하여 관련 트레이스백만 표시합니다. (DeepSpeed 및 단일 프로세스 구성에만 적용됩니다.)

나머지 인수는 `accelerate config`를 통해 설정되며, 지정된 `--config_file`(또는 기본 구성)에서 값을 읽어옵니다. 수동으로 전달할 수도 있습니다.

**하드웨어 선택 인자**:

* `--cpu` (`bool`) -- CPU에서 훈련을 강제할지 여부.
* `--multi_gpu` (`bool`) -- 분산 GPU 학습을 시작할지 여부.
* `--tpu` (`bool`) -- TPU 학습을 시작할지 여부.

**리소스 선택 인자**:

다음 인수는 사용 가능한 하드웨어를 어떻게 사용할지 세밀하게 조정하는 데 유용합니다

* `--mixed_precision {no,fp16,bf16,fp8}` (`str`) -- 혼합 정밀도 학습을 사용할지 여부. FP16과 BF16(bfloat16) 학습 중 하나를 선택합니다. BF16 학습은 Nvidia Ampere GPU와 PyTorch 1.10 이상에서만 지원됩니다.
* `--num_processes NUM_PROCESSES` (`int`) -- 병렬로 실행할 프로세스의 총 개수.
* `--num_machines NUM_MACHINES` (`int`) -- 이 학습에 사용되는 머신의 총 개수입니다.
* `--num_cpu_threads_per_process NUM_CPU_THREADS_PER_PROCESS` (`int`) -- 프로세스당 CPU 스레드 수입니다. 최적의 성능을 위해 조정할 수 있습니다.
* `--enable_cpu_affinity` (`bool`) -- CPU affinity 및 balancing을 활성화할지 여부. 현재 NVIDIA 하드웨어에서만 지원됩니다.

**학습 패러다임 인자**:

다음 인자들은 사용할 학습 패러다임을 선택하는 데 유용합니다.

* `--use_deepspeed` (`bool`) -- 학습에 DeepSpeed를 사용할지 여부.
* `--use_fsdp` (`bool`) -- 학습에 FullyShardedDataParallel을 사용할지 여부.
* `--use_megatron_lm` (`bool`) -- 학습에 Megatron-LM을 사용할지 여부.

**분산 GPU 인자**:

다음 인수는 `multi_gpu`가 전달되거나 `accelerate config`를 통해 멀티 GPU 학습이 구성된 경우에만 유용합니다:

* `--gpu_ids` (`str`) -- 이 머신에서 학습에 사용할 GPU를 쉼표로 구분된 ID 목록으로 지정
* `--same_network` (`bool`) -- 멀티노드 학습에 사용되는 모든 머신이 동일한 로컬 네트워크에 존재하는지 여부.
* `--machine_rank` (`int`) -- 이 스크립트가 실행되는 머신의 랭크입니다.
* `--main_process_ip` (`str`) -- rank 0 머신의 IP 주소입니다.
* `--main_process_port` (`int`) -- rank 0 머신과 통신하는 데 사용할 포트입니다.
* `-t`, `--tee` (`str`) -- 표준 스트림을 로그 파일과 콘솔에 동시에 기록합니다.
* `--log_dir` (`str`) -- torchrun/torch.distributed.run을 런처로 사용할 때 로그 파일에 사용할 기본 디렉터리입니다. --tee와 함께 사용하여 표준 스트림을 로그 파일로 리디렉션합니다.
* `--role` (`str`) -- 워커에 대한 사용자 정의 역할.
* `--rdzv_backend` (`str`) -- 사용할 rendezvous 방법입니다. 'static'(기본값) 또는 'c10d' 등이 있습니다.
* `--rdzv_conf` (`str`) -- 추가 rendezvous 구성 (=,=,...).
* `--max_restarts` (`int`) -- 실패하기 전에 worker group을 재시작할 최대 횟수.
* `--monitor_interval` (`int`) -- 워커 상태를 모니터링할 간격(초).

**TPU 인자**:

다음 인수는 `tpu`가 전달되거나 `accelerate config`를 통해 TPU 학습이 구성된 경우에만 유용합니다:

* `--tpu_cluster` (`bool`) -- 학습에 GCP TPU pod를 사용할지 여부.
* `--tpu_use_sudo` (`bool`) -- 각 pod에서 TPU 학습 스크립트를 실행할 때 `sudo`를 사용할지 여부.
* `--vm` (`str`) -- 단일 Compute VM 인스턴스 이름 목록입니다. 제공되지 않으면 인스턴스 그룹 사용으로 간주합니다. TPU 팟용입니다.
* `--env` (`str`) -- Compute VM 인스턴스에 설정할 환경 변수 목록입니다. TPU 팟용입니다.
* `--main_training_function` (`str`) -- 스크립트에서 실행할 메인 함수의 이름 (TPU 학습에만 해당).
* `--downcast_bf16` (`bool`) -- TPU에서 bf16 정밀도를 사용할 때 float과 double 텐서를 모두 bfloat16으로 캐스팅할지, 아니면 double 텐서는 float32로 유지할지를 결정합니다.

**DeepSpeed 인자**:

다음 인수는 `use_deepspeed`가 전달되거나 `deepspeed`가 `accelerate config`를 통해 구성된 경우에만 유용합니다:

* `--deepspeed_config_file` (`str`) -- DeepSpeed 설정 파일.
* `--zero_stage` (`int`) -- DeepSpeed의 ZeRO 최적화 단계.
* `--offload_optimizer_device` (`str`) -- 옵티마이저 상태를 어디(none|cpu|nvme)로 오프로드할지 결정합니다.
* `--offload_param_device` (`str`) -- 파라미터를 오프로드할 위치(none|cpu|nvme)를 결정합니다.
* `--offload_optimizer_nvme_path` (`str`) -- 옵티마이저 상태를 오프로드할 Nvme 경로를 결정합니다.
* `--gradient_accumulation_steps` (`int`) -- 학습 스크립트에서 사용할 gradient_accumulation_steps의 개수.
* `--gradient_clipping` (`float`) -- 학습 스크립트에서 사용되는 Gradient clipping 값.
* `--zero3_init_flag` (`str`) -- 대규모 모델을 구성하기 위해 `deepspeed.zero.Init`를 활성화할지(true|false) 결정합니다. DeepSpeed ZeRO Stage-3에서만 적용됩니다.
* `--zero3_save_16bit_model` (`str`) -- ZeRO Stage-3를 사용할 때 16비트 모델 가중치를 저장할지 여부(true|false)를 결정합니다. DeepSpeed ZeRO Stage-3에서만 적용됩니다.
* `--deepspeed_hostfile` (`str`) -- 멀티노드 컴퓨트 리소스를 구성하기 위한 DeepSpeed hostfile입니다.
* `--deepspeed_exclusion_filter` (`str`) -- 멀티노드 구성을 사용할 때 DeepSpeed exclusion filter 문자열.
* `--deepspeed_inclusion_filter` (`str`) -- 멀티노드 구성을 사용할 때 DeepSpeed inclusion filter 문자열.
* `--deepspeed_multinode_launcher` (`str`) -- 사용할 DeepSpeed 멀티노드 런처입니다.
* `--deepspeed_moe_layer_cls_names` (`str`) -- 감싸기 위한 transformer MoE 레이어 클래스 이름의 쉼표로 구분된 목록(대소문자 구분), 예: `MixtralSparseMoeBlock` `Qwen2MoeSparseMoeBlock`, `JetMoEAttention,JetMoEBlock`

**Fully Sharded Data Parallelism 인자**:

다음 인수는 `use_fsdp`가 전달되거나 `accelerate config`를 통해 Fully Sharded Data Parallelism이 구성된 경우에만 유용합니다:

* `--fsdp_offload_params` (`str`) -- 매개변수와 기울기를 CPU로 오프로드할지 여부를 결정합니다 (true|false).
* `--fsdp_min_num_params` (`int`) -- FSDP의 Default Auto Wrapping에 사용되는 최소 파라미터 수.
* `--fsdp_sharding_strategy` (`int`) -- FSDP의 Sharding Strategy입니다.
* `--fsdp_auto_wrap_policy` (`str`) -- FSDP의 자동 래핑 정책입니다.
* `--fsdp_transformer_layer_cls_to_wrap` (`str`) -- 래핑할 Transformer 레이어 클래스 이름(대소문자 구분), 예: `BertLayer`, `GPTJBlock`, `T5Block` ...
* `--fsdp_backward_prefetch_policy` (`str`) -- FSDP의 backward prefetch 정책입니다.
* `--fsdp_state_dict_type` (`str`) -- FSDP의 state dict 유형.
* `--fsdp_forward_prefetch` (`str`) -- FSDP forward prefetch입니다.
* `--fsdp_use_orig_params` (`str`) -- True인 경우, FSDP 단위에서 비균일한 `requires_grad`가 혼합되는 것을 허용합니다.
* `--fsdp_cpu_ram_efficient_loading` (`str`) -- true인 경우, 첫 번째 프로세스만 사전 학습된 모델 체크포인트를 로드하고 모든 다른 프로세스는 빈 가중치를 가집니다. 이 옵션을 사용할 때 `--fsdp_sync_module_states`는 True여야 합니다.
* `--fsdp_sync_module_states` (`str`) -- true인 경우, 개별적으로 래핑된 각 FSDP 유닛이 rank 0에서 모듈 매개변수를 브로드캐스트합니다.
* `--fsdp_activation_checkpointing` (`bool`) -- forward pass 중 중간 activations가 해제되고, 체크포인트가 플레이스홀더로 남을지 여부를 결정합니다

**Megatron-LM 인자**:

다음 인수는 `use_megatron_lm`가 전달되거나 `accelerate config`를 통해 Megatron-LM이 구성된 경우에만 유용합니다:

* `--megatron_lm_tp_degree` (``) -- Megatron-LM의 Tensor Parallelism(TP) degree.
* `--megatron_lm_pp_degree` (``) -- Megatron-LM의 Pipeline Parallelism(PP) degree.
* `--megatron_lm_num_micro_batches` (``) -- PP degree가 1보다 큰 경우 Megatron-LM의 micro batch 수.
* `--megatron_lm_sequence_parallelism` (``) - TP degree가 1보다 큰 경우 Sequence Parallelism을 활성화할지(true|false) 결정합니다.
* `--megatron_lm_recompute_activations` (``) - Selective Activation Recomputation을 활성화할지(true|false) 결정합니다.
* `--megatron_lm_use_distributed_optimizer` (``) - Data Parallel (DP) rank에 걸쳐 옵티마이저 상태와 그래디언트를 샤딩하는 분산 옵티마이저를 사용할지 여부(true|false)를 결정합니다.
* `--megatron_lm_gradient_clipping` (``) - 전역 L2 노름 기반 Megatron-LM의 그래디언트 클리핑 값(0이면 비활성화).

**FP8 인자**:

* `--fp8_backend` (`str`) -- FP8로 학습할 백엔드를 선택합니다 (`ao` 또는 `te`)
* `--fp8_use_autocast_during_eval` (`bool`) -- eval 모드에서 FP8 autocast를 사용할지 여부(`--fp8_backend=te`가 전달된 경우에만 유용합니다). 일반적으로 이 옵션을 전달하지 않을 때 더 나은 지표가 확인됩니다.
* `--fp8_margin` (`int`) -- 그래디언트 스케일링에 사용할 마진입니다(`--fp8_backend=te`가 전달된 경우에만 유용합니다).
* `--fp8_interval` (`int`) -- 스케일 팩터가 다시 계산되는 간격(단, `--fp8_backend=te`가 전달된 경우에만 유용합니다).
* `--fp8_format` (`str`) -- FP8 레시피에 사용할 형식(`--fp8_backend=te`가 전달될 때만 유용합니다).
* `--fp8_amax_history_len` (`int`) -- 스케일링 계수 계산에 사용할 히스토리의 길이입니다(`--fp8_backend=te`가 전달된 경우에만 유용합니다).
* `--fp8_amax_compute_algo` (`str`) -- 스케일링 계수 계산에 사용할 알고리즘입니다. (`--fp8_backend=te`가 전달된 경우에만 유용합니다).
* `--fp8_override_linear_precision` (`Tuple[bool, bool, bool]`) -- `fprop`, `dgrad`, `wgrad` GEMM을 더 높은 정밀도로 실행할지 여부.

**AWS SageMaker 인자**:

다음 인수는 SageMaker에서 학습할 때만 유용합니다

* `--aws_access_key_id AWS_ACCESS_KEY_ID` (`str`) -- Amazon SageMaker 학습 작업을 시작하는 데 사용되는 AWS_ACCESS_KEY_ID
* `--aws_secret_access_key AWS_SECRET_ACCESS_KEY` (`str`) -- Amazon SageMaker 학습 작업을 시작하는 데 사용되는 AWS_SECRET_ACCESS_KEY

## accelerate estimate-memory

**명령**:

`accelerate estimate-memory` 또는 `accelerate-estimate-memory` 또는 `python -m accelerate.commands.estimate`

Hub에 호스팅된 특정 모델을 학습을 위한 추정치와 함께 로드하는 데 필요한 총 vRAM을 추정합니다. `huggingface_hub`가 설치되어 있어야 합니다.

    추론을 수행할 때, 일반적으로 [여기에서 참조된 바와 같이](https://blog.eleuther.ai/transformer-math/) 전체 할당량에 20% 이하를 추가합니다. 향후 계산에 자동으로 포함될 더 포괄적인 추정치가 제공될 예정입니다.

**사용법**:

```bash
accelerate estimate-memory {MODEL_NAME} --library_name {LIBRARY_NAME} --dtypes {dtype_1} {dtype_2} ...
```

**필수 인자**:

* `MODEL_NAME` (`str`)-- Hugging Face Hub의 모델 이름

**선택 인자**:

* `--library_name {timm,transformers}` (`str`) -- 모델이 통합되어 있는 라이브러리, 예: `transformers`. 이 정보가 Hub에 저장되어 있지 않은 경우에만 필요합니다
* `--dtypes {float32,float16,int8,int4}` (`[{float32,float16,int8,int4} ...]`) -- 모델에 사용할 dtype으로, `float32`, `float16`, `int8`, `int4` 중 하나(또는 여러 개)여야 합니다
* `--trust_remote_code` (`bool`) -- Hub에 있는 커스텀 모델이 자체 modeling 파일에 정의된 경우 이를 허용할지 여부입니다. 이 옵션은 Hub에 존재하는 코드가 로컬 머신에서 실행되므로, 신뢰할 수 있는 저장소에서만 사용해야 하며 해당 코드를 읽은 경우에만 전달해야 합니다.

## accelerate tpu-config

`accelerate tpu-config`

**사용법**:

```bash
accelerate tpu-config [arguments]
```

**선택 인자**:
* `-h`, `--help` (`bool`) -- 도움말 메시지를 표시하고 종료합니다

**설정 인자**:

`accelerate config`를 통해 설정할 수 있는 인자입니다.

* `--config_file` (`str`) -- accelerate에 사용할 설정 파일의 경로.
* `--tpu_name` (`str`) -- 사용할 TPU의 이름입니다. 지정하지 않으면 설정 파일에 지정된 TPU를 사용합니다.
* `--tpu_zone` (`str`) -- 사용할 TPU의 zone입니다. 지정하지 않으면 config 파일에 지정된 zone을 사용합니다.

**TPU 인자**:

TPU에서 실행된 옵션에 대한 인자

* `--command_file` (`str`) -- pod 시작 시 실행할 명령어가 포함된 파일의 경로입니다.
* `--command` (`str`) -- pod에서 실행할 명령입니다. 여러 번 전달할 수 있습니다.
* `--install_accelerate` (`bool`) -- pod에 accelerate를 설치할지 여부입니다. 기본값은 False입니다.
* `--accelerate_version` (`str`) -- pod에 설치할 accelerate의 버전입니다. 지정하지 않으면 최신 pypi 버전을 사용합니다. GitHub에서 설치하려면 'dev'를 지정합니다.
* `--debug` (`bool`) -- 설정하면 실행 대신 실행될 명령을 출력합니다.

## accelerate test

`accelerate test` 또는 `accelerate-test`

`accelerate/test_utils/test_script.py`를 실행하여 시스템에서 🤗 Accelerate가 올바르게 구성되고 실행되는지 확인합니다.

**사용법**:

```bash
accelerate test [arguments]
```

**선택 인자**:
* `--config_file CONFIG_FILE` (`str`) -- 설정 파일을 저장할 경로입니다. 기본값은 캐시 위치에 있는 `HF_HOME` 환경 변수의 값 뒤에 'accelerate'가 붙은 이름의 default_config.yaml 파일입니다. 해당 환경 변수가 없으면 캐시 디렉터리(`~/.cache` 또는 `XDG_CACHE_HOME`의 값) 뒤에 `huggingface`가 붙은 경로가 사용됩니다.
* `-h`, `--help` (`bool`) -- 도움말 메시지를 표시하고 종료합니다

