본문 바로가기
Pipeline을 만들 때와 실행할 때의 Parameter가 다름? #인공지능(LLM·Vision)
import transformers
import torch

model_id = "facebook/opt-350m"  # 공개적으로 사용 가능한 모델로 변경

pipeline = transformers.pipeline(
    "text-generation",
    model=model_id,
    model_kwargs={"torch_dtype": torch.float16},
    device_map="auto",
)

messages = [
    {"role": "system", "content": "You are a helpful assistant designed to output JSON."},
    {"role": "user", "content": "Who are you?"}
]

prompt_text = pipeline.tokenizer.apply_chat_template(messages, tokenize=False)

outputs = pipeline(
    prompt_text,
    max_new_tokens=500,
    do_sample=True,
    temperature=1.0,
    top_p=1.0,
)
print(outputs[0]['generated_text'])
  1. apply_chat_template 메서드를 사용하여 대화 형식의 입력을 올바르게 처리
  2. eos_token_id를 제거하고 모델의 기본값을 사용

pipeline을 처음 만들 때 일반적으로 모델과 관련된 기본 매개변수만 설정하고, 텍스트 생성과 관련된 세부 매개변수는 pipeline을 실행할 때 지정

 

pipeline 생성 시 주로 설정하는 매개변수:

  • task: 수행할 작업 유형 (예: 'text-generation')
  • model: 사용할 모델
  • tokenizer: 사용할 토크나이저
  • device: 실행할 장치 (예: CPU 또는 GPU)

pipeline 실행 시 지정하는 매개변수:

  • prompt_text: 생성의 시작점이 되는 텍스트
  • max_new_tokens: 생성할 최대 토큰 수
  • do_sample: 샘플링 여부
  • temperature: 생성의 무작위성 정도
  • top_p: 상위 확률 샘플링 임계값

그러면 langchain은 이 실행 매개변수를 promptTemplate으로부터 pipeline에 넘겨주는 것을 자동으로 하는 것임? LangChain은 PromptTemplate에서 pipeline으로 실행 매개변수를 자동으로 넘겨줌. 이는 LangChain의 주요 기능 중 하나임

  1. PromptTemplate을 사용하여 동적 프롬프트를 정의
  2. 이 템플릿은 pipeline의 일부가 됨
  3. pipeline을 실행할 때, 입력 매개변수를 제공
  4. LangChain은 자동으로 이 매개변수를 PromptTemplate에 전달하고, 완성된 프롬프트를 생성
  5. 생성된 프롬프트는 pipeline의 다음 단계(예: LLM)로 전달

참고 : https://mirascope.com/blog/langchain-prompt-template/

mport-transformers-import-torc-TAXBwvX.QJis6LLjfyhMOw

댓글