PyTorch RBLN으로 실행하고 디버깅하기
개요
이 튜토리얼에서, PyTorch RBLN을 이용해서 실행하고 디버깅하는 예제를 보여드립니다.
설정과 설치
| $ pip install \
--extra-index-url https://download.pytorch.org/whl/cpu \
torch-rbln==0.1.8
|
| $ pip install \
--extra-index-url https://pypi.rbln.ai/simple \
rebel-compiler==0.10.2
|
간단한 예제 돌려보기 (torch.add)
다음의 add.py는 RBLN NPU에서 fp16 dtype의 텐서 연산을 검증하는 예제입니다. cuda나 cpu 대신 rbln을 지정하는 것 외에는 GPU 또는 CPU에서 실행하는 코드와 동일합니다.
| add.py |
|---|
| import torch
device = "rbln"
a = torch.tensor([1, 2, 3], dtype=torch.float16, device=device)
b = torch.tensor([4, 5, 6], dtype=torch.float16, device=device)
c = a + b
print(f"{c}") # expect: [5., 7., 9.] on rbln:0 (fp16)
|
위의 코드를 실행하면 다음의 결과를 기대할 수 있습니다.
| $ python3 add.py
tensor([5., 7., 9.], device='rbln:0', dtype=torch.float16)
|
RBLN NPU에서 element wise로 동작하는 fp16 torch.add의 실행 결과가 예상과 일치하는 것을 확인할 수 있습니다.
PyTorch RBLN을 사용해서 추가로 디버깅하기
다음 예제는 PDB를 사용하여 결과 tensor의 값과 개별 element의 값을 확인하는 예제입니다.
| $ python3 -m pdb add.py
> add.py(1)<module>()
-> import torch
(Pdb) b 9
Breakpoint 1 at add.py:9
(Pdb) c
> add.py(9)<module>()
-> print(f"{c}")
(Pdb) p c
tensor([5., 7., 9.], device='rbln:0', dtype=torch.float16)
(Pdb) p c[0], c[1]
(tensor(5., device='rbln:0', dtype=torch.float16), tensor(7., device='rbln:0', dtype=torch.float16))
|
위의 예제에서 전체 c 텐서의 값과 c[0], c[1]의 값이 모두 예상과 일치하는 것을 볼 수 있습니다.