InfraPlatform

Ollama + LLama + NVIDIA - WSL Oracle Linux 9.5

IT오이시이 2026. 2. 13. 16:47
728x90

Ollama + LLAMa - WSL Oracle Linux 9.5   

 

#install NVIDIA , Cuda, ollama, LLama

 

 

 

 

#install NVIDIA

 

 

NVIDIA CUDA 저장소 추가

 
dnf/yum 작동을 위해 : /etc/yum.repos.d/nvidia.com.repo 를 작성합니다.
# /etc/yum.repos.d/nvidia.com.repo  을 아래와 같이 작성합니다.

[cuda-rhel10-x86_64]
name=cuda-rhel10-x86_64
baseurl=https://developer.download.nvidia.com/compute/cuda/repos/rhel10/x86_64
enabled=1
sslverify=0
gpgcheck=1
gpgkey=https://developer.download.nvidia.com/compute/cuda/repos/rhel10/x86_64/CDF6BA43.pub

[nvidia.com]
name=created by dnf config-manager from https://nvidia.com
baseurl=http://nvidia.com
enabled=0
sslverify=0
 

CUDA Toolkit 설치 (드라이버 제외)

WSL에서는 커널 모듈이 필요 없으므로, 전체 cuda 메타 패키지 대신 CUDA Toolkit만 설치하면 됩니다.

 

#NVIDIA CUDA 환경 설정
sudo dnf install -y kernel-headers kernel-devel gcc make
sudo dnf install -y cuda


# NVIDIA CUDA 저장소 추가
sudo dnf install -y dnf-plugins-core
sudo dnf config-manager --add-repo http://developer.download.nvidia.com/compute/cuda/repos/rhel9/x86_64/cuda-rhel9.repo
sudo dnf clean all


# CUDA Toolkit 설치
sudo dnf -y install cuda-toolkit-13-1



# 환경 변수 설정
echo 'export PATH=/usr/local/cuda/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc


# CUDA Toolkit 점검
nvcc --version
nvidia-smi
  • nvcc --version → CUDA 컴파일러 버전 확인
  • nvidia-smi → WSL에서 GPU가 정상적으로 노출되는지 확인

 

 

PyTorch 및 Transformers GPU 최적화

pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu131

 

PyTorch GPU 테스트

CUDA가 정상적으로 동작하는지 Python에서 확인:

import torch
print(torch.cuda.is_available())
print(torch.cuda.get_device_name(0))

 

 

LangChain RAG 파이프라인 GPU 최적화

임베딩 모델을 GPU에서 실행:

# 임베딩 모델을 GPU에서 실행:
from langchain.embeddings import HuggingFaceEmbeddings

embeddings = HuggingFaceEmbeddings(
    model_name="sentence-transformers/all-MiniLM-L6-v2",
    model_kwargs={"device": "cuda"}
)

 

LLaMA 모델을 Ollama로 호출하면서 GPU 활용:

from langchain.llms import Ollama
llm = Ollama(model="llama2", options={"num_gpu":1})

 

 

RAG 체인 구성:

from langchain.chains import RetrievalQA
from langchain.vectorstores import FAISS

vectorstore = FAISS.load_local("faiss_index", embeddings)
qa = RetrievalQA.from_chain_type(
    llm=llm,
    chain_type="stuff",
    retriever=vectorstore.as_retriever()
)

 

 

FAISS GPU 모드: FAISS를 GPU에서 실행하려면 faiss-gpu 패키지를 설치:

 

pip install faiss-gpu

 

 

최종 확인

 

  • Ollama가 GPU를 인식하는지 확인 (--verbose 옵션).
  • PyTorch에서 torch.cuda.is_available()가 True인지 확인.
  • LangChain 임베딩 및 FAISS 검색이 GPU에서 실행되는지 확인.

 

 

PDF 문서를 불러와서 GPU 기반 RAG 검색을 수행하는 예제는 LangChain + FAISS + HuggingFace 임베딩을 활용하면 쉽게 구성할 수 있습니다. CUDA GPU를 활용하려면 임베딩과 벡터 검색을 GPU에서 실행하도록 설정해야 합니다.

 

pip install langchain pypdf faiss-gpu torch transformers sentence-transformers

 

 

PDF 문서 로딩 및 임베딩

 
 
from langchain.document_loaders import PyPDFLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.embeddings import HuggingFaceEmbeddings
from langchain.vectorstores import FAISS

# PDF 문서 로드
loader = PyPDFLoader("example.pdf")
documents = loader.load()

# 텍스트 분할
text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=100)
docs = text_splitter.split_documents(documents)

# GPU 기반 임베딩 모델 설정
embeddings = HuggingFaceEmbeddings(
    model_name="sentence-transformers/all-MiniLM-L6-v2",
    model_kwargs={"device": "cuda"}   # GPU 사용
)

# FAISS 벡터스토어 생성 (GPU 버전)
vectorstore = FAISS.from_documents(docs, embeddings)
 
 
 
Ollama + LLaMA 모델 연결
 
 
from langchain.llms import Ollama
from langchain.chains import RetrievalQA

# Ollama LLaMA 모델 (GPU 옵션)
llm = Ollama(model="llama2", options={"num_gpu":1})

# RAG 체인 구성
qa = RetrievalQA.from_chain_type(
    llm=llm,
    chain_type="stuff",
    retriever=vectorstore.as_retriever()
)

# 질의 실행
query = "이 PDF 문서에서 CUDA 설치 관련 내용을 요약해줘"
print(qa.run(query))

 

 

 

성능 최적화 포인트

  • FAISS GPU 모드: faiss-gpu 설치 시 GPU에서 벡터 검색 수행 → 대규모 문서 검색 속도 향상.
  • Batch Embedding: 문서 임베딩 시 batch_size를 크게 설정하면 GPU 활용도가 높아짐.
  • Mixed Precision: PyTorch AMP(torch.cuda.amp)를 활용하면 FP16 연산으로 속도 개선.
728x90
반응형