Langchain활용 LLM

seongjae·2023년 10월 19일
0

바퀴를 재발명하지 말라
거인의 어깨에 올라서서 더 넓은 세상을 바라보라

새로운 NLU 프로젝트를 시작함에 있어서,
LLM을 고려하는 것은 이제 필수에 가깝다고 할 수 있을 것 같다.

서로 양식이 너무 다른 다수의 문서를 전처리하다가
'와... 답 없네'라는 생각이 드는 순간 LLM을 쓰지 않을 이유가 있을까라는 생각이 들었다.

몇일간 아주 짧게 겉을 핥아 보겠다.
(출간 안한 포스트가 쌓이고 있다 이건 실시간으로 업데이트 해야겠다)))

  1. LLM
  • 잘 알려진 GPT, LLAMA를 기반으로 파생된 파인튜닝 모델들의 사용
  1. Langchain
  • 분명 다른 툴들도 빠르게 나오고 있지만 일단은 선두주자격인 langchain으로 빠르게 거대 언어 모델들을 사용해보자.

주의! 이글은 아직 수정중입니다. 임시 저장안하고 걍 공개

Langchain

Most easiest way
1. pip install langchain

  • Ollama 벨루가 모델로 로컬에서 LLM을 잘 수행하기 위한 라이브러리가 더 있다. 근데 windows는 아직 지원 안함
  1. pip install llama-cpp-python
  • Hardware Acceleration: readme를 잘 읽어보고 내 컴퓨터 사양을 잘 알아보고 하시면 됩니다. 근데 로컬에서 돌릴거임?
    BLAS의 백엔드 설정은 여기서. GPU 잘 사용하려면 세팅. Docker 세팅도 있으니 참조.
  1. llama2 model download
  • llama 사이트에 가셔서 다운을 요청하면,- 메일이 오고 거기 있는 링크를 통해서 git clone
  • linux라면 자연스럽게 다운받으면 되고 window라면 git bash에서 download.sh 실행하면 됩니다.
  • 그리고 메일에 있던 링크를 복사해서 붙여넣기 후 다운 받을 모델을 선택하면 됩니다.
  • 저사양 환경이면 따지지 말고 7B

권한 요청이 없는 다양한 LLM 모델 주소

  1. TheBloke/Llama-2-7B-Chat-GGUF
  • GGML 기법을 통해서 GPU 없이도 모델을 작동시킬 수 있습니다 -> llama.cpp가 더이상 GGML을 지원하지 않아 GGUF으로 대체되었습니다
  • GPTQ, GGUF, AWQ 양자화 차이랑 사이즈는 다른 곳에서(어라 얘기하는 데가 없나? 클리앙 같은데서 좀 보이느 듯)
  • TheBloke는 아래의 다른 모델의 양자화 모델도 지원하고 있습니다 찾아보시면 좋아요
  1. NousResearch/Llama-2-7b-chat-hf
  2. WizardLM
  • Evol - instruct 방법으로 fine-tuning학습한 모델
  1. stabilityai/StableBeluga2
  • Stable Diffusion으로 유명한 stabilityai입니다. 이전 모델 이름은 freewilly,
  • MS의 Oraca style dataset의 파인튜닝이다. -
  • 이쪽 OpenOraca 데이터셋도 히스토리가 재밌는거 같다.
  1. 그외 강력한 모델들
  • Airoboros, Hermes
  1. 작은 사이즈
  • SlimPajama, SwiGLU, ALiBI, Variable Sequence Length, Maximal update parameterization (muP)
  1. 허깅페이스에서 액세스 토큰 받기
  2. 질문하면 되는데 llama에서는 다음과 같은 포멧이었는데
<s>[INST] <<SYS>>
{your_system_message}
<</SYS>>


{user_message_1} [/INST] {model_reply_1}</s>
<s>[INST] {user_message_2} [/INST]

langchain은 좀 다르다. langflow라는 프로그램이 나온다니까 기다려볼가도 싶지만, 아래는 다듬어야해서 삭제

PREFIX = """Answer the following question using the given tools:"""
FORMAT_INSTRUCTIONS = """Follow this format:
Question: {input_question}
Thought: your initial thought on the question
Action: your chosen action from [{tool_names}]
Action Input: your input for the action
Observation: the action's outcome"""
SUFFIX = """Start!
Question: {input}
Thought:{agent_scratchpad}""

source

META AI LLAMA

requirements.txt

dotenv
openai
langchain
transformers
accelerate
sentencepiece
huggingface-hub
llama-cpp-python
bitsandbytes

Error log

  1. pip install 간 pytz(2021.1) metadata 유실 경고문
WARNING: Error parsing requirements for pytz: [Errno 2] No such file or directory: 경로/METADATA
  • 간단할것 같은 문제지만 내 conda가 너무 옛날 녀석이라서 다 갈아엎게 되는 계기가 되었음. 고맙다 conda야 죽을거 같아. conda는 웬만하면 안쓰고 싶다 정말. 근데 왜 다들 열심히 쓰시나요?
  1. llama-cpp-python 설치 에러
  • 과거의 내가 저지른 잘못으로 매일이 힘듬, 모든 꼼수들이 안되면 cmake, C++ vs tool 설치 부터 해보기

reference

파이토치 한국 사용자 모임
뉴스 하다

profile
Python User DA, Being GOod

0개의 댓글