본문 바로가기
프로그래밍

초보자를 위한 윈도우 파이썬 개발 환경 설정 2. 인공지능 샘플코드 실행

by 배로만쌤(김인영) 2025. 2. 21.

 

<이미지 생성 출처: 냅킨AI>

이전 아티클에서는 윈도우 운영체제에서 파이썬 개발 환경을 설치하는 내용을 정리했습니다.

이번에는 Ollama를 설치하고 llama3.2를 다운로드하여 실행하고 깃허브에서 RAG샘플코드를 실행하는 것까지 해보겠습니다.

이 글의 목적은 초보자가 인공지능을 학습하기 위해 기본적인 환경을 설정하고 스스로 학습하는 방향성을 제시하기 위한 것입니다. 덧붙여 기존 개발자도 손쉽게 환경을 설정하고 따라 하면서 LLM 개발을 시작할 수 있게 돕고자 합니다.

Ollama와 llama3.2 설치

우선 관리자 권한을 갖는 터미널 창을 실행해주세요.

그리고 지난번 설치했던 Choco를 이용해 다음 명령을 실행해 주세요.

> choco install ollama

ollama는 LLM 모델을 설치하고 관리하는 개발 도구입니다. 따라서 설치하면 llm모델을 쉽게 다운로드하고 관리할 수 있습니다.

그림1. ollama 설치 화면

위와 같이 성공적으로 설치를 했다면 다른 일반 터미널 창을 열고 다음 명령을 실행해 보시면 ollama가 정상 설치된 것을 확인할 수 있습니다.

> ollama

이 명령을 실행하면 ollama 사용방법인 help 내용이 보일 것입니다.

다음으로 llama3.2를 설치하는 명령을 실행합니다.

> ollama run llama3.2

참고로 위 명령을 실행한 제 컴퓨터 사양은 다음과 같습니다. 이 사양보다 스펙이 늦을 경우 모델이 정상적으로 실행이 되지 않을 수 있습니다. 그래픽카드는 내장 그래픽을 사용합니다.

장치 이름 baefoo001-laptop
프로세서 Intel(R) Core(TM) i7-8650U CPU @ 1.90GHz   2.11 GHz
설치된 RAM  16.0GB(15.8GB 사용 가능)
시스템 종류 64비트 운영 체제, x64 기반 프로세서
펜 및 터치 10개의 터치 포인트를 사용할 수 있는 터치 지원

ollama run명령을 llm 모델을 다운로드하고 실행하는 명령입니다.

다운로드가 완료되면 llama3.2가 입력 프롬프트를 대기하고 있습니다. 저는 다음 캡처와 같이 “1에서부터 100까지의 합을 구하는 파이썬 코드를 작성해 주세요”라고 요청하니 답변을 받았습니다. 캡쳐 화면과 같이 정확하게 답변을 하였습니다.

그림2. 올라마에서 라마3.2 실행 화면

/bye 명령으로 실행상태에서 나옵니다.

깃허브 소스 다운로드

관리자권한 파워쉘을 열어 다음 명령을 실행해서 git프로그램을 설치합니다.

> choco install git.install

도스 창을 다시 열어주세요. 이전 도스 창을 닫고 다시 열어야 합니다.

> mkdir github

> cd github

> git clone https://github.com/deeepsig/rag-ollama.git

 

Python 가상 환경 세팅

파이썬 가상환경이란 파이썬 패키지들의 버전을 가상환경에서 묶어 일치하게 만드는 설정입니다. 따라서 지금부터 실행하는 내용을 시간이 지나 시스템의 환경이 바뀌어도 현 파이썬 가상환경 내에서는 지금 실행한 내용을 동일하게 재현할 수 있습니다.

가상환경 설정방법은 여러 가지가 있는데 개발자들이 많이 사용하는 방법은  conda를 이용하는 것이지만 윈도우 환경에서는 적합하지 않아 파이썬에서 기본 제공하는 가상환경을 사용하기로 합니다. 앞의 도스창에서

> python -m venv llm_env

> .\llm_env\Scripts\activate

이런 명령을 치면 명령프롬프트 맨 앞에 (llm_env)라는 접두어가 표시됩니다.

가상환경 상태를 해지하는 명령은

> .\llm_env\Scripts\deactivate

LLM 샘플 코드 실행

이제는 제가 다음 깃허브 링크의 파일을 실행해서 RAG로 프로그래밍하는 방법을 시연하겠습니다.

다운로드한 파일은 총 3개입니다. 그중 .ipynb라는 주피터노트북 파일이 소스입니다. 일반적으로 파이썬 소스는 .py라는 확장명을 갖게 되는데 이는 컴파일러로 한 번에 실행하는 소스입니다. 하지만 주피터노트북 파일은 전체 소스를 작은 명령단위로 나누어서 인터프린터 방식으로 실행할 수 있게 하는 파일입니다. 따라서 주피터노트북 파일로 소스를 실행하면 좀 더 이해가 쉽게 덧붙어 소스의 설명도 적어놓고 볼 수 있어서 좋습니다.

 

주피터노트북은 별도의 환경에서 실행되지만  Visual Studio Code에서 내부 확장프로그램으로 주피터노트북 파일을 지원합니다. 따라서 다음 명령으로  VS Code을 실행합니다. 

(llm_env) C:\github\Ollama>code .

VS Code가 실행되면 폴더를 신뢰하냐는 물음에 신뢰를 체크하고 팝업창을 닫습니다.

 

편집기 좌측 상단 탐색기 창이 다음과 같은 화면이 보일 것입니다.

그림3. 비주얼스튜디오코드 탐색기 창

이 중 이름이 제일 긴 파일이 주피터노트북 파일이니 클릭해서 선택합니다.

그리고 소스의 아래 부분은 기본 파이썬 패키지 설치 명령입니다. 주피터북의 셀은 주석 부분이 있고 파이썬 코드 부분이 있습니다. 코드 부분에서 !표는 터미널창의 명령을 실행한다는 의미입니다.

그림4. 패키지 설치 화면

좌측 세모를 클릭하면 아래와 같은 팝업창이 나오는데 이는 주피터노트북을 실행하는 커널 확장 패키지를 설치하는 것이니 이를 설치하고 넘어갑니다.

그림5. 주피터노트북 커널 확장 패키지설치

패키지가 설치하면 오류가 발생합니다.

에러 메시지를 보면 pip 업데이트 명령을 실행하라 제안합니다. 다음과 같이 패키지 설치 셀에서 코드 추가 아이콘 두 개가 뜨도록 셀 중간에 마우스를 갖다 대고 "Code"를 선택합니다.

그림6. 코드 셀 생성하기

!python.exe -m pip install --upgrade pip

위 명령을 코드 셀에 입력하고 실행합니다. 그렇지만 다시 패키지를 설치해도 오류가 뜹니다.

그림7. 두번째 에러메시지

오류 메시지 하단에 위와 같은 빌드도구 설치 링크가 있습니다. 이를 클릭하면 빌드도구 다운로드 사이트가 브라우저에 뜹니다.

그림8. 빌드 도구 다운로드 페이지

빌드도구를 다운로드하고 실행합니다.

그림9. 빌드 도구 설치 화면

 “C++를 사용한 데이크톱 개발”도구를 선택하고 설치버튼을 클릭합니다.

도구가 다 설치되고 다시 패키지를 설치하는 삼각형을 누르면 정상적으로 패키지가 설치된 것을 확인할 수 있습니다.

“Document Loading” 항의 아래 소스를 실행하면 다음과 같은 오류가 발생합니다. 의존성 문제로 bs4패키지를 설치해야 한다는 메시지이다.

그림10. BeautifulSoup4 패키지 설치 오류 메시지

따라서 소스 위에 코드셀을 삽입하여 다음과 같이 패키지를 설치하는 명령을 실행합니다.

!pip install beautifulsoup4

다음 코드들은 정상적으로 실행됩니다. 그리고 Ollama는 이미 앞에서 설치하였기에 이곳 소스에서 설치하는 명령을 스킵합니다.

그리고 다음과 같이 소스에서 모델을 변경해 주세요. 감마7B 모델은 저사양 컴퓨터에서는 동작하기 어렵습니다. 따라서 라마3.2 2B모델로 실습하기로 하겠습니다.

라마3.2는 이미 설치했으니 다음과 같이 출력될 것입니다.

그림11. 라보3.2 모델 환경변수 변경 코드

하단에 Ollama pull  명령은 실행할 필요 없습니다. 이 명령은 모델을 다운로드하는 명령인데 이미 라마3.2는 다운로드되어 한번 실행되었습니다.

그리고 Ollama 서버를 띄우고 RAG Chain 항목의 소스에서 올라마 모델을 다시 한번 llama3.2로 이미지와 같이 수정합니다.

그림12. LLM 모델 라마3.2로 지정하는 코드 변경

마지막 셀을 하나 더 복사하여 아래와 같이 명령프롬프트를 하면 한글로도 비슷하게 답변하는 것을 알 수 있습니다.

그림13. LLM쿼리 답변화면

이상과 같이 샘플 코드를 실행해 보았습니다.

소스의 처음에 있는 다음 다이어그램을 보면 이 소스가 어떤 내용을 설명하는지 유추할 수 있습니다.

그림14. RAG 체인 설명 이미지

이 소스에서  벡터DB에는 저자가 작성한 “https://lilianweng.github.io/posts/2023-06-23-agent/“ 이 블로그 글을 임베딩하여 벡터로 내용을 보관하고 있습니다. 이를 라마 3.2가 참조해서 답변을 준 것 최종  invoke 함수에서 답변을 받은 것입니다.

따라서 관련 없는 다른 질문을 하면 아마도 생뚱맞은 답변을 하거나 기본 라마3.2가 유추하는 답변을 받을 수 있습니다.

독자는 이 invoke함수 내의 문장을 변경하여 다양한 질문을 해보시면 됩니다.

 

이상으로 llm 거대언어모델을 RAG방식으로 동작하는 샘플코드를 실행하는 시연을 정리해 보았습니다.

 

그럼, 내용이 도움이 되었으면 좋겠습니다.

 

감사합니다.

 

참고자료:

 

댓글