gpu 사용 방법

문제 : gpu 사용이 안됩니다.

import torch
if torch.cuda.is_available():
device = torch.device('cuda')
print("Using GPU:", torch.cuda.get_device_name(0))
else:
device = torch.device('cpu')
print("Using CPU")
x = torch.randn(3, 3)
x = x.to(device)
print(x)

위에 코드를 사용해 보니까 'Using GPU: NVIDIA GeForce GTX 1660 Ti with Max-Q Design' 다음과 같이 gpu 사용이 되는것으로 나옵니다.
그런데 제가 테스트 해보고 싶은 코드에서는(아래 코드) gpu사용이 아닌 cpu사용으로 표기됩니다. (BLAS = 0)
어떤 부분을 확인 해야 되는지 문의 드립니다.

테스트 환경 : visual studio code
from llama_cpp import Llama
llm = Llama(model_path = 'llama-2-7b-chat.Q4_K_M.gguf',
n_ctx=512,
n_batch=512,
n_gpu_layers=60
)
output = llm("Q: 인생이란 뭘까요?. A: ", max_tokens=1024, stop=["Q:", "\n"], echo=True)
print( output['choices'][0]['text'].replace('▁',' ') )

  • 아래 답변은 Anthropic의 Claude-2 모델로 자동 생성한 것으로, 정확하지 않을 수 있습니다.
  • 잘못된 답변을 보셨다면 댓글로 첨삭 지도 부탁드립니다. :sweat_smile:

안녕하세요 kim_kim님, gpu 사용 문제를 겪고 계시군요. 제가 도와드리겠습니다.

먼저 코드를 확인해보니 PyTorch가 GPU를 찾아서 사용할 수 있도록 설정은 잘 되어 있습니다.

그런데 실제로 연산을 하는 코드에서는 CPU만 사용하고 있는 것 같습니다.

이 경우 아마도 몇 가지 사항을 확인해보셔야 할 것 같습니다:

  1. Llama 모델을 불러올 때, device 설정을 추가로 해주셔야 할 수 있습니다.
llm = Llama(..., device=device) 
  1. forward 연산 시에 input tensor를 GPU로 옮겨주셔야 합니다.
input_ids = input_ids.to(device)
output = llm(input_ids)
  1. 혹시 PyTorch extension(C++/CUDA)를 사용하고 계시다면, 그 쪽 설정도 GPU 사용으로 바꿔주셔야 할 수 있습니다.

제가 정확한 상황은 잘 모르겠습니다만, 위의 내용들을 확인해보시면 원인을 찾을 수 있지 않을까 생각합니다.

추가로 궁금한 점이 있으시면 comment로 달아주세요. 같이 문제를 해결해보겠습니다.

좋은 하루 되세요!


  • 답변이 어떠셨나요? 괜찮았다고 생각하신다면 아래 :heart:를 한 번 눌러주시길 부탁드려요!
  • 아래 답변은 OpenAI의 GPT-3.5(ChatGPT) 모델로 자동 생성한 것으로, 정확하지 않을 수 있습니다.
  • 잘못된 답변을 보셨다면 댓글로 첨삭 지도 부탁드립니다. :sweat_smile:

안녕하세요 kim_kim님,

문제를 이해하고 정리해보겠습니다. GPU를 사용하여 코드를 실행하려고 하지만, 특정 코드에서는 GPU 대신 CPU가 사용되는 것으로 나타납니다. GPU를 사용하는 방법을 확인하고 싶으신 것으로 이해하겠습니다.

문제를 해결하기 위한 해결책은 다음과 같습니다.

  1. 첫 번째 코드에서 GPU를 사용하는 방법을 확인합니다. 첫 번째 코드에서는 torch.cuda.is_available() 함수를 사용하여 GPU가 사용 가능한지 확인하고, torch.device('cuda')를 사용하여 GPU 장치를 설정한 후, x.to(device)를 사용하여 텐서를 GPU로 이동시킵니다. 이러한 방법을 사용하여 GPU를 사용할 수 있습니다.

  2. 두 번째 코드에서는 Llama 클래스를 사용하여 모델을 로드하고, llm 객체를 생성한 후, llm 객체를 사용하여 텍스트를 생성합니다. 이 코드에서는 GPU를 사용하는 방법이 명시되어 있지 않습니다. 따라서, Llama 클래스의 생성자에 device 매개변수를 추가하여 GPU를 사용하도록 설정해야 합니다. 예를 들어, device='cuda'와 같이 설정하면 GPU를 사용할 수 있습니다.

아래는 위의 해결책을 적용한 예시 코드입니다.

import torch

# 첫 번째 코드
if torch.cuda.is_available():
    device = torch.device('cuda')
    print("Using GPU:", torch.cuda.get_device_name(0))
else:
    device = torch.device('cpu')
    print("Using CPU")
x = torch.randn(3, 3)
x = x.to(device)
print(x)

# 두 번째 코드
from llama_cpp import Llama

llm = Llama(model_path='llama-2-7b-chat.Q4_K_M.gguf',
            n_ctx=512,
            n_batch=512,
            n_gpu_layers=60,
            device='cuda')  # GPU 사용 설정
output = llm("Q: 인생이란 뭘까요?. A: ", max_tokens=1024, stop=["Q:", "\n"], echo=True)
print(output['choices'][0]['text'].replace('▁', ' '))

위의 코드를 실행하면 GPU를 사용하여 코드를 실행할 수 있습니다.

더 자세한 내용은 PyTorch 공식 문서의 GPU 사용 가이드(Getting Started with Distributed Data Parallel — PyTorch Tutorials 2.1.0+cu121 documentation)를 참고하시기 바랍니다.

문제 해결에 도움이 되었는지 확인 부탁드리며, 추가로 궁금한 사항이 있으면 언제든지 질문해주세요.


  • 답변이 어떠셨나요? 괜찮았다고 생각하신다면 아래 :heart:를 한 번 눌러주시길 부탁드려요!

코드에 이슈는 없어 보이는데요. llama_cpp 설치 하실 때 해당 hardware acceleration에 맞게 빌드된 버전을 설치하셨는지 확인해 보시면 좋을 것 같습니다. 참고 링크 드립니다. GitHub - abetlen/llama-cpp-python: Python bindings for llama.cpp

1개의 좋아요
  • 아래 답변은 OpenAI의 GPT-4 모델로 자동 생성한 것으로, 정확하지 않을 수 있습니다.
  • 잘못된 답변을 보셨다면 댓글로 첨삭 지도 부탁드립니다. :sweat_smile:

안녕하세요, kim_kim님. GPU 사용에 관한 문제를 겪고 계신 것 같네요. 정리해보면, PyTorch에서는 GPU를 정상적으로 인식하고 사용하는 것으로 보이나, 특정 코드에서는 CPU를 사용하는 것으로 나타나는 문제를 겪고 계신 것으로 이해했습니다.

먼저, PyTorch에서 GPU를 사용하는 부분은 정상적으로 동작하는 것으로 보입니다. 그러나, 문제가 되는 코드에서는 llama_cpp 라이브러리를 사용하고 있는데, 이 라이브러리가 GPU를 사용하도록 설정되어 있는지 확인이 필요합니다.

llama_cpp 라이브러리의 경우, GPU를 사용하도록 설정하는 방법이 따로 있을 수 있습니다. 해당 라이브러리의 문서나 예제 코드를 참조하여 GPU 사용 설정 방법을 확인해보시는 것이 좋을 것 같습니다.

그런데, 만약 llama_cpp 라이브러리가 GPU를 지원하지 않는다면, 해당 라이브러리를 사용하는 코드는 CPU를 사용하게 될 것입니다. 이 경우, 해당 코드를 GPU를 사용하도록 변경하는 것은 어려울 수 있습니다.

또한, 'BLAS = 0'이라는 메시지는 BLAS 라이브러리가 CPU를 사용하도록 설정되어 있다는 것을 의미할 수 있습니다. BLAS 라이브러리는 선형 대수 연산을 위한 라이브러리로, CPU와 GPU 모두에서 사용할 수 있습니다. 따라서, BLAS 라이브러리가 GPU를 사용하도록 설정하는 방법을 찾아보시는 것도 하나의 방법일 수 있습니다.

이에 대한 자세한 내용은 PyTorch 공식 문서나 llama_cpp 라이브러리의 문서를 참조하시면 도움이 될 것입니다.

제가 제시한 해결 방법이 정확한 해결책이라는 보장은 없습니다. 만약 추가적인 정보나 질문이 있으시다면, 언제든지 물어보세요. 도움이 될 수 있도록 최선을 다하겠습니다.


  • 답변이 어떠셨나요? 괜찮았다고 생각하신다면 아래 :heart:를 한 번 눌러주시길 부탁드려요!