피드로 돌아가기
새로워지기·마흔의 생활코딩

LangChain | -백업

NS
normalstory
표지 이미지
YouTube 영상 미리보기YouTube
외부 미디어

영상 요약

  1. 요약이 아직 없습니다.

llm 관련 다양한 프레임워크들이 있는데 대부분이 OpenAI API 에 의존하고 있다. 되도록 이를 피하는 예제를 위주로 실습 중인데 테디노트에서 관심있는 주요 항목들에 대한 실습 영상을 올려주셔서 관련 진행 내용을 포스팅해본다 

무료로 한국어?? 파인튜닝 모델 받아서 나만의 로컬 LLM 호스팅 하기(LangServe) + RAG 까지!! (학습 콘텐츠 출처: 테디노트)

( 참고로 llm을 로컬 컴퓨터에 다운로드해서 손쉽게 쓸 수 있도록 도와주는 툴은 대표적인 방법은 크게 ollama, AnythingLLM, Lm studio 세가지 정도가 있는데 테디노트의 이번 예제는 올라마 ollama를 활용하고 있다. )

 

 

실습 과정

1.  HuggingFace-Hub에서 한국어?? 파인튜닝 모델 받기

1) 실습 모델( EEVE-Korean-Instruct-10.8B-v1.0) 다운로드

      (1) 방법 A. CLI 
        a-1) 작업할 폴더 생성 및 이동 
        a-2) 해당 경로 터미널에서 패키지 설치 : pip install huggingface-hub
        a-3) 그 다음, 터미널 창에 입력할 '다운로드' 명령어 

         - 작성 방법

huggingface-cli download \\
  허깅페이스 모델페이지의 메인타이틀 \\
  모델목록중 다운받으려는 파일이름.gguf \\
  --local-dir 내 컴퓨터 안에 모델을 저장할 위치 \\
  --local-dir-use-symlinks 심볼릭(바로가기)링크로 사용여부

        - 사용 예

huggingface-cli download \\
  heegyu/EEVE-Korean-Instruct-10.8B-v1.0-GGUF \\
  ggml-model-Q5_K_M.gguf \\
  --local-dir /Users/Charles/code/langserve_ollama/ollama-modelfile \\
  --local-dir-use-symlinks False

 

      (2) 방법 B. 사이트에서 바로 다운
       b-1) 모델 찾기 다운로드
       b-2) 내가 원하는 폴더로 이동  

 

2. 내려받은 모델은 ollama에 등록하기 

1) 선 요약 :   

     (1) 내려받은 .gguf 파일*이 있는 폴더(위치 중요 x) 안에   
     (2) 모델을 설명하는 파일(Modelfile**, 이름 중요 x)을 생성하고
     (3) ollama create를 실행해서 ollama list안에 추가한다  

*.gguf 파일은 나온지 1년도 안된 파일형식(관련 설명 참고)이다. 그래서 종종 HuggingFace-Hub에서 검색한 일부 모델의 경우,, .ggml 파일 형식만 있는 경우도 있으니 알아두면 정신건강에 좋다
 

What is GGUF and GGML?

GGUF and GGML are file formats used for storing models for inference, especially in the context of language models like GPT (Generative…

medium.com

**Modelfile은 확장자 없는 파일이다. VIM..이런 툴도 많은데.. 그냥 VSCODE에서 작성하는게 정신건강에 좋다.. 

***ollama create.. 는 올라마 ollama cli 문법 중 하나인데.. 공식 문서를 보면 상세히 설명이 되어 있다. 
 

ollama/docs/modelfile.md at main · ollama/ollama

Get up and running with Llama 3, Mistral, Gemma, and other large language models. - ollama/ollama

github.com

 

2) 내려받은 .gguf 파일이 있는 경로에 모델 파일 생성 후 작성하기 :

FROM ggml-model-Q5_K_M.gguf

TEMPLATE """
        {{- if .System }}
        <s>{{ .System }}</s>
        {{- end }}
        <s>Human:
        {{ .Prompt }}</s>
        <s>Assistant:
    """

SYSTEM """
        A chat between a curious user and an artificial intelligence assistant. 
        The assistant gives helpful, detailed, and polite answers to the user's questions.
    """

PARAMETER temperature 0
PARAMETER num_predict 3000
PARAMETER num_ctx 4096
PARAMETER stop <s>
PARAMETER stop </s>
Modelfile 모델파일 작성법 요약

FROM               - 사용할 기본 모델 기록(요거만, 필수
TEMPLATE      - 모델에 전송될 전체 프롬프트 템플릿( *필수는 아니지만 llm이 취한?것 처럼 느껴질 수 있음)
SYSTEM          - 템플릿에 설정될 시스템 메시지를 지정( *필수는 아니지만 llm?이 나를 무시?하는 것 처럼 느껴질 수 있음)
PARAMETER   - Ollama가 모델을 실행하는 방법에 대한 매개변수를 설정( *창의/랜덤 정도를 얼마나 줄지 : 0 ~ 2)
ADAPTER        - 절대/상대경로 설정( *앞에서 --local-dir-use-symlinks False한 경우나 바로 다운로드 한 경우엔 생략) 
LICENSE          - 법적 라이센스를 지정합니다. 
MESSAGE        - 메시지 기록을 지정합니다.( *특정 상황에 대한 대답 패턴을 정의할 수 있음, 공식문서 참고. 공식문서의 예 
                             "나라의 수도를 확인하는 질문"에는 "Yes/No 단답형으로 답변"할 것을 지정하고 있음) 

*순서는 상관없음. 대소문자 구분안함. 대문자 표기는 사람보기 편하기 위해 쓰임 

 

3) 터미널에서 ollama create 하기 :    

    (1) 사용 예 :

ollama create EEVE-Korean-10.8B -f ollama-modelfile/Modelfile-V02

    (2) 사용 설명 : 

       상황.1) 터미널이 모델 파일과 같은 경로에 있다면, 

ollama create 내가원하는모델이름 -f 모델파일이름

       상황.2) 터미널이 모델 파일과 다른 폴더 경로에 있다면, 

ollama create 내가원하는모델이름 -f 모델이있는폴더(사람마다 다름)/모델파일이름(사람마다 다른데 보통 Modelfile로 사용)

 

4) 잘 등록되었는지 확인, 터미널에서 ollama로 내가등록한모델 검색하기 *참고로 내 컴퓨터에 ollama가 설치되어 있다면 아무 위치에서나 ollama관련 명령을 실행할 수 있음.(이유는 설치 시 환경 변수에 등록되어 있어서임)

ollama list

목록에 있으면 성공

 

 

3. 본격 코딩

0) 빈 폴더 생성 후 가상 환경 설정(공식 문서)

(1) 가상 환경 생성 : python -m venv streamlit
(2) 가상 환경 실행 : source streamlit/bin/activate

*streamlit는 각자 원하는 이름으로 설정

 

1) front-end 구성 

(1) 패키지 설치 

설치 : pip install streamlit
실행 : streamlit hello

(2) .gitignore 작성, 깃헙 생성&연동

.cache/
.streamlit
**/__pycache__/**

*.DS_Store
*.pyc
*.gguf

(3) test code 작성, 실행 : front_main.py

# main.py
import streamlit as st

st.text('hello Streamlit!')
test 실행 : streamlit run front_main.py 

 

 

2) back-end 구성 

(1) 패키지 설치

Python기반 웹 프레임워크 : pip install fastapi
Python기반 웹 서버 : pip install uvicorn 

(2) test code 작성, 실행 및 api test : server_main.py

from typing import Union
from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def read_root():
return {"Hello": "World"}

@app.get("/items/{item_id}")
async def read_item(item_id: int, q: Union[str, None] = None):
return {"item_id": item_id, "q": q}
test 실행 : uvicorn server_main:app --reload

http://127.0.0.1:8000
http://127.0.0.1:8000/docs

 

3) LangServe 구성 

 

 

3) NGROK로 배포 

 

친절한 찰쓰씨
글쓴이
친절한 찰쓰씨
친절한 찰쓰씨 · 일상 UX 디자이너
기획·디자인·단상을 조용히 기록합니다.
작가 페이지에서 더 보기

이어서 읽기

새로워지기

꾸준히, 오래, 지치지 않고

Mar 31, 2026·8
새로워지기

테크 라이프 발란스

Feb 7, 2026·3
새로워지기

휴탈리티 박정렬

Feb 7, 2026·11