Transformers documentation
Intel Gaudi
Intel Gaudi
Intel Gaudi 가속기는 Intel Gaudi 스택에서 PyTorch를 실행하며, 디바이스 문자열은 hpu입니다. Gaudi는 기본적으로 PyTorch를 eager mode로 실행합니다. Eager mode는 CPU나 GPU에서 PyTorch가 실행되는 방식과 동일하게 각 연산이 호출되는 즉시 실행하므로, Transformers 모델은 Gaudi 전용 변경 사항 없이 Gaudi에서 실행됩니다. 대신 모델을 그래프로 캡처하려면 torch.compile로 컴파일하세요.
설치
Intel Gaudi 설치 가이드를 사용하여 Intel Gaudi 소프트웨어와 PyTorch 패키지(habana-torch-plugin, habana_frameworks로 가져옴)를 설치하고, Accelerate 1.5.0 이상을 함께 설치하세요.
Transformers는 토큰 ID에 int64 텐서를 사용하므로 Gaudi에서 int64 지원을 활성화해야 합니다. Transformers의 Gaudi CI도 동일한 설정으로 실행됩니다.
export PT_ENABLE_INT64_SUPPORT=1Transformers가 장치를 확인할 수 있는지 확인합니다.
from transformers import is_torch_hpu_available
print(is_torch_hpu_available())Gaudi가 사용 준비가 되면 True를 출력하고, Gaudi 디바이스가 존재하더라도 Accelerate 버전이 1.5.0보다 낮으면 False를 출력합니다.
디바이스 선택
Docker 컨테이너를 시작할 때 컨테이너가 사용할 수 있는 Gaudi 장치를 선택합니다. 재부팅 및 드라이버 재설치 후에도 동일하게 유지되는 모듈 ID를 지정하려면 HABANA_VISIBLE_MODULES을, 변경될 수 있는 장치 인덱스를 지정하려면 HABANA_VISIBLE_DEVICES를 설정합니다. 둘 다 설정하지 않으면 PyTorch는 서버에서 사용 가능한 모든 Gaudi 장치를 사용합니다.
docker run --runtime=habana -e HABANA_VISIBLE_MODULES=0,1,2,3 ...
hl-smi -Q index,module_id -f csv를 실행하여 장치 인덱스를 모듈 ID에 매핑합니다. 서버의 일부에서 분산 워크로드를 실행하는 경우, Intel은 2개 장치 및 4개 장치 그룹만 지원합니다. 지원되는 모듈 ID 조합은 각 단일 워크로드를 가진 여러 Docker를 참조하세요.
추론 실행
device_map="hpu"를 from_pretrained()에 전달합니다. device를 전달하지 않으면 pipeline()이 Gaudi를 자동으로 선택합니다.
from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen3-0.6B", device_map="hpu")
tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen3-0.6B")
inputs = tokenizer("Intel Gaudi is", return_tensors="pt").to(model.device)
output = model.generate(**inputs, max_new_tokens=50, do_sample=False)
print(tokenizer.decode(output[0], skip_special_tokens=True))모델 양자화
bitsandbytes는 Gaudi 2와 Gaudi 3에서 모델을 4비트 또는 8비트로 양자화합니다. device_map을 전달하지 않으면, 모델은 현재 Gaudi 장치에 배치됩니다.
하나의 디바이스에 맞지 않는 모델을 파인튜닝하려면, bitsandbytes를 사용하여 4-bit로 로드하고 PEFT로 LoRA 어댑터를 학습하세요.
Trainer로 학습
TrainingArguments는 Gaudi를 감지하여 장치를 hpu로 설정하므로, Trainer는 별도의 장치 설정 없이 해당 장치에서 학습을 수행합니다. 모든 Gaudi 세대는 bf16을 지원합니다.
from transformers import TrainingArguments
training_args = TrainingArguments(
output_dir="./outputs",
bf16=True,
)
print(training_args.device)Trainer가 Gaudi에서 학습할 경우 hpu 장치를 출력합니다.
모델 컴파일
Transformers는 Gaudi에서 torch.compile을 래핑하므로, hpu_backend 또는 eager가 아닌 다른 백엔드를 사용하는 모든 호출, 모델링 코드 내의 @torch.compile 데코레이터를 포함하여, hpu_backend로 전환되고 경고가 기록됩니다. 이 래퍼는 추론 또는 훈련을 위한 모든 torch.compile 호출에 적용됩니다.
모델을 학습용으로 컴파일하려면 TrainingArguments에서 torch_compile=True를 설정합니다. 이렇게 하면 torch_compile_backend가 "hpu_backend"로 설정됩니다.
from transformers import TrainingArguments
training_args = TrainingArguments(
output_dir="./outputs",
bf16=True,
torch_compile=True,
)분산 학습
분산 학습은 HCCL 콜렉티브 백엔드를 사용합니다. Transformers는 Gaudi에서 이를 선택하며, ddp_backend="hccl"을 사용하여 명시적으로 설정할 수도 있습니다.
training_args = TrainingArguments(
output_dir="./outputs",
bf16=True,
ddp_backend="hccl",
)디바이스 선택 후, Gaudi 디바이스당 하나의 프로세스를 torchrun 또는 accelerate launch로 시작합니다. --num_processes를 전달하지 않으면 accelerate launch는 프로세스 수를 Gaudi 디바이스 수로 설정합니다.
accelerate launch train.py
다음 단계
- 하드웨어 세부 사항, 소프트웨어 스택 및 Gaudi 아키텍처에 대한 내용은 Intel Gaudi 문서를 참고하세요.
- Gaudi 최적화 모델 구현으로 학습 및 추론을 수행하려면 Optimum for Intel Gaudi를 사용해 보세요.