Pytorch를 통한 학습을 위해서 신규 그래픽카드로 Blackwell 6000 Pro를 사무실에 도입하였습니다.
그런데 3080ti보다 못한 연산속도가 나오고 있네요.
집 컴퓨터에는 5070ti가 있어서 이 녀석으로도 학습을 시켜보니 여전히 3080ti보다 느립니다.
float32, float64에서 동일한 현상이 나타나구요.
Cuda 12.8부터 sm_120 지원한다고 해서 Cuda 12.8에다가 torch와 torchaudio는 2.9.0, torchvision은 0.24.0 을 설치해서 pytorch에서 그래픽카드도 잘 인식하고 연산 때 그래픽카드 활용하는 것도 잘 확인이 되는 상황이구요.
아래 답변은 Anthropic의 Claude-3 Opus 모델로 자동 생성한 것으로, 정확하지 않을 수 있습니다.
잘못된 답변을 보셨다면 댓글로 첨삭 지도 부탁드립니다.
안녕하세요. 새로운 그래픽카드로 Blackwell 6000 Pro와 5070ti를 도입했는데 3080ti보다 연산 속도가 느린 문제로 고민하시는 것 같습니다.
새로운 Ada Lovelace 아키텍처 기반의 GPU들은 기존 Ampere 아키텍처 기반 GPU 대비 CUDA 코어 수가 대폭 감소한 대신 클럭 속도와 Tensor 코어 성능이 크게 향상되었습니다.
따라서 순수 FP32/FP64 연산 위주의 워크로드에서는 오히려 Ampere 기반 GPU가 더 높은 성능을 보일 수 있습니다.
또한 현재 PyTorch에서 최신 Ada Lovelace GPU의 FP8 Tensor 코어를 활용할 수 있는 bf16/fp8 연산 지원이 아직 제한적입니다.
bf16/fp8을 적극 활용해야만 Ada GPU의 잠재력을 최대한 이끌어낼 수 있을 것 같네요.
관련해서 PyTorch의 bf16/fp8 연산 지원 개선 현황은 다음 링크들을 참고해보시기 바랍니다.
현재로서는 FP32/FP64 위주 연산에서 Ampere 기반 GPU가 더 적합할 수 있으나, 앞으로 PyTorch의 저정밀도 연산 지원이 개선되면 Ada Lovelace GPU들이 더 높은 성능을 보일 것으로 기대됩니다.
추가 문의사항이 있으시면 꼭 말씀해주세요. 감사합니다!
아래 답변은 OpenAI의 GPT-4o 모델로 자동 생성한 것으로, 정확하지 않을 수 있습니다.
잘못된 답변을 보셨다면 댓글로 첨삭 지도 부탁드립니다.
안녕하세요! 새로운 그래픽카드를 도입하셨는데 기대했던 성능이 나오지 않아 많이 당황스러우셨을 것 같습니다. 질문을 정리해보면, Blackwell 6000 Pro와 5070ti 그래픽카드를 사용하여 PyTorch를 통해 학습을 시도했지만, 3080ti보다 연산 속도가 느리다는 문제를 겪고 계신 것 같습니다. CUDA 12.8과 PyTorch 2.9.0을 사용하고 계시며, 그래픽카드는 잘 인식되고 있는 상황입니다.
이 문제를 해결하기 위해 몇 가지 점검해볼 사항들을 제안드리겠습니다:
드라이버 및 CUDA 버전 확인: 최신 드라이버와 CUDA 버전이 설치되어 있는지 확인해보세요. 특히, 새로운 그래픽카드의 경우 최신 드라이버가 필요할 수 있습니다. NVIDIA의 공식 웹사이트에서 최신 드라이버를 다운로드할 수 있습니다.
PyTorch 및 CUDA 호환성: PyTorch와 CUDA의 호환성을 확인하세요. PyTorch의 특정 버전은 특정 CUDA 버전과 호환됩니다. PyTorch 설치 가이드를 참고하여 설치된 버전이 적절한지 확인해보세요.
PyTorch 설정 확인: PyTorch에서 GPU가 제대로 사용되고 있는지 확인하세요. 아래 코드를 통해 GPU가 인식되고 있는지, 그리고 사용 가능한지 확인할 수 있습니다.
import torch
# GPU가 사용 가능한지 확인
print("CUDA available:", torch.cuda.is_available())
# 사용 중인 GPU 이름 출력
if torch.cuda.is_available():
print("GPU Name:", torch.cuda.get_device_name(0))
모델 최적화: 모델이 새로운 GPU 아키텍처에 최적화되어 있는지 확인하세요. PyTorch의 torch.backends.cudnn.benchmark = True 설정을 통해 성능을 향상시킬 수 있습니다.
프로파일링 도구 사용: PyTorch의 프로파일링 도구를 사용하여 병목 현상이 발생하는 부분을 찾아보세요. PyTorch Profiler를 사용하면 코드의 성능을 분석할 수 있습니다.
하드웨어 사양 비교: 각 그래픽카드의 하드웨어 사양을 비교해보세요. 메모리 대역폭, CUDA 코어 수, 클럭 속도 등이 성능에 영향을 미칠 수 있습니다.
이 외에도, 특정 연산이 새로운 아키텍처에서 최적화되지 않았을 가능성도 있습니다. 이러한 경우, PyTorch의 업데이트를 기다리거나, NVIDIA의 지원 포럼에서 추가적인 도움을 받을 수 있습니다.
더 많은 정보를 원하시면 PyTorch 공식 튜토리얼을 참고하시기 바랍니다. 문제가 해결되지 않으면 추가적인 정보를 제공해주시면 더 도움을 드릴 수 있도록 하겠습니다. 제 답변이 틀릴 수도 있으니, 다른 전문가의 의견도 참고하시길 권장드립니다.
이 답변이 도움이 되셨나요? 괜찮았다고 생각하신다면 아래 를 한 번 눌러주시길 부탁드려요!
GPU 성능을 올렸는데도, 예전 GPU에서 실행한 것보다 느리다면, PyTorch 프로세스를 Nsight Systems 프로파일러로 프로파일링 진행 후에 Kernel 실행 Timeline을 한 번 확인해보시는 걸 추천합니다.
CNN처럼 실행 모델이 작거나 LLM이어도 7B 모델에서 prompt 하나만 넣고 추론하는 경우라면, GPU에서 Kernel 실행 시간보다 CPU에서 Kernel을 Issue하는데 걸리는 시간이 더 길어서 GPU 성능 상관없이 모델 처리 속도가 느린 경우가 존재합니다.
만약 위와 같은 경우가 의심된다면 일단 프로파일링 없이 PyTorch에서 제공하는 CUDA Graph API를 사용해서 한 번 실행해보시는 걸 추천합니다.
또는 이런 경우는 거의 없지만 시간 측정 방법이 잘못 되어있을 수도 있는데요, CPU 측정 방법과는 다르게 GPU에서 동작하는 모델 실행 시간을 측정할 때는 torch.cuda.synchronize()와 torch.cuda.Event 객체를 활용해서 시간을 재는 방법이 있습니다. ( [Pytorch] GPU elapsed time / torch.cuda.Event() 를 참고하면 좋을 거 같습니다.)