소규모 LLM을 위한 실용적인 프롬프트 엔지니어링

Maud Nalpas
Maud Nalpas

대규모 언어 모델의 효과는 인코더-디코더 아키텍처를 줍니다. 프롬프트 엔지니어링은 질문을 작성하는 프로세스입니다. 이는 LLM 기반 특성을 구현하는 데 중요한 단계입니다.

프롬프트 엔지니어링은 반복적인 프로세스입니다. 키워드 플래너를 사용하여 여러 LLM을 대상으로 하는 경우, 프롬프트를 조정하여 원하는 결과를 얻기 위해 더 나은 결과를 얻을 수 있습니다

이는 다양한 사이즈의 모델에서도 마찬가지입니다.

Gemini와 같은 대규모 LLM으로 구동되는 채팅 인터페이스 ChatGPT를 사용하면 종종 프롬프트 작업을 최소화하면서 만족스러운 결과를 얻을 수 있습니다. 하지만 미세 조정되지 않은 더 작은 기본 LLM으로 작업할 때는 접근 방식을 조정해야 합니다

LLM이 작으면 덜 강력하며 가져올 정보 풀도 더 적습니다.

'더 작은 LLM'이란 무엇을 의미할까요?

LLM 크기를 정의하는 것은 복잡하며 항상 정의되는 것은 아닙니다. 공개될 수 있습니다.

이 문서에서는 '더 작은 LLM' 300억 매개변수 미만의 모든 모델을 의미합니다. 오늘날 수백만 개 또는 수십억 개의 매개변수를 갖는 모델은 브라우저에서, 소비자급 기기에서 현실적으로 실행됩니다

소형 LLM은 어디에 사용되나요?

  • 기기 내/브라우저 내 생성형 AI(예: Gemma 2B를 사용하는 경우) MediaPipe의 LLM Inference API로 구현됩니다. (CPU 전용 기기에도 적합) 브라우저의 DistilBert를 사용하면 Transformers.js를 사용해야 합니다. 모델을 다운로드하고 사용자 기기에서 추론을 실행하는 것만 가능합니다. 보다 합리적이고 적합한 웹 다운로드 환경을 제공하기 위해 메모리 및 GPU/CPU 제약조건이 많기 때문입니다.
  • 커스텀 서버 측 생성형 AI. Gemma 2B와 같은 소형 개방형 가중치 모델 Gemma 7B 또는 Gemma 27B는 자체 서버에서 실행할 수 있으며 원하는 경우 미세 조정).

시작하기

Gemini 또는 ChatGPT와 같은 대규모 LLM으로 구동되는 채팅 인터페이스는 프롬프트 작업을 최소화하면서도 만족스러운 결과를 얻을 수 있는 경우가 많습니다. 그러나 더 작은 LLM으로 작업할 때는 접근 방식을 조정해야 합니다. LLM이 작으면 덜 강력하며 가져올 정보 풀도 더 적습니다.

문맥과 정확한 형식 안내 제공

소형 LLM으로 최적의 결과를 얻으려면 보다 상세하고 구체적인 프롬프트를 작성합니다.

예를 들면 다음과 같습니다.

Based on a user review, provide a product rating as an integer between 1 and 5. \n
Only output the integer.

Review: "${review}"
Rating:
입력 (검토) 출력 (평점)
  더 커진 LLM (Gemini 1.5) 소형 LLM (Gemma 2B)
착용감이 완벽합니다. 체중을 적절히 분산하여 온종일 트레킹할 때도 놀라울 정도로 편안한 착용감을 선사합니다. 추천하겠습니다. 5 별 5개 중 4개**
끈이 조잡해서 짐이 과중한 상태에서 내 어깨를 뚫기 시작했어요. 1 2월 5일

Gemini 1.5는 이 간단한 프롬프트로 원하는 출력을 제공하지만 Gemma의 출력이 만족스럽지 않은 경우:

  • 형식이 잘못되었습니다. 평점에 정수를 요청했습니다.
  • 등급이 정확하지 않은 것 같습니다. 첫 번째 리뷰는 별 5개짜리 리뷰를 표시할 만큼 열정적입니다.

이 문제를 해결하려면 프롬프트 엔지니어링 기법을 사용해야 합니다 원-샷, 퓨샷, 멀티샷 프롬프팅 생각의 연쇄 프롬프팅을 살펴보겠습니다 또한 형식에 대한 명확한 지침을 제공해야 하며 모델이 모든 종류의 평점을 사용합니다.

예를 들면 다음과 같습니다.

`Analyze a product review, and then based on your analysis give me the
corresponding rating (integer). The rating should be an integer between 1 and
5. 1 is the worst rating, and 5 is the best rating. A strongly dissatisfied
review that only mentions issues should have a rating of 1 (worst). A strongly
satisfied review that only mentions positives and upsides should have a rating
of 5 (best). Be opinionated. Use the full range of possible ratings (1 to
5). \n\n
    \n\n
    Here are some examples of reviews and their corresponding analyses and
    ratings:
    \n\n
    Review: 'Stylish and functional. Not sure how it'll handle rugged outdoor
    use, but it's perfect for urban exploring.'
    Analysis: The reviewer appreciates the product's style and basic
    functionality. They express some uncertainty about its ruggedness but
    overall find it suitable for their intended use, resulting in a positive,
    but not top-tier rating.
    Rating (integer): 4
    \n\n
    Review: 'It's a solid backpack at a decent price. Does the job, but nothing
    particularly amazing about it.'
    Analysis: This reflects an average opinion. The backpack is functional and
    fulfills its essential purpose. However, the reviewer finds it unremarkable
    and lacking any standout features deserving of higher praise.
    Rating (integer): 3
    \n\n
    Review: 'The waist belt broke on my first trip! Customer service was unresponsive too. Would not recommend.'
    Analysis: A serious product defect and poor customer service experience naturally warrants the lowest possible rating. The reviewer is extremely unsatisfied with both the product and the company.
    Rating (integer): 1
    \n\n
    Review: 'Love how many pockets and compartments it has. Keeps everything organized on long trips. Durable too!'
    Analysis: The enthusiastic review highlights specific features the user loves (organization and durability), indicating great satisfaction with the product. This justifies the highest rating.
    Rating (integer): 5
    \n\n
    Review: 'The straps are a bit flimsy, and they started digging into my shoulders under heavy loads.'
    Analysis: While not a totally negative review, a significant comfort issue leads the reviewer to rate the product poorly. The straps are a key component of a backpack, and their failure to perform well under load is a major flaw.
    Rating (integer): 1
    \n\n
    Now, here is the review you need to assess:
    \n
    Review: "${review}" \n`;
입력 (검토) 더 작은 LLM (Gemma 2B)을 사용한 출력

착용감이 완벽합니다. 놀랍게도 체중을 적절히 분산 온종일 트레킹할 때도 편안한 착용감을 선사합니다. 추천하겠습니다.

분석: 이 리뷰는 매우 긍정적이며 제품의 장점을 강조합니다. 착용감과 편안함을 모두 갖추고 있으며 제품에 대한 높은 만족도를 나타냅니다. 이 높은 평점을 받아야 합니다

평점 (정수): 5

끈이 조잡해서 내 어깨를 뚫고 들어가기 시작했어 과부하가 발생할 수 있습니다.

**분석:** 이 리뷰는 모바일 앱의 중요한 편안함 문제를 강조합니다. 있습니다. 또한 제품이 무거운 장소에 적합하지 않을 수 있음을 나타냅니다. 오래도록 머물 수 없습니다.

**평점:** 1 (최저)

퓨샷 프롬프팅 및 연쇄적 프롬프팅 기법과 결합된 보다 정교한 프롬프트는 보다 정확한 평가를 제공합니다.

수동 출력 파싱 예상

항상 LLM의 출력을 수동으로 정리하고 해석해야 하지만 이는 덜 완성도 높은 결과를 생성할 수 있는 소형 LLM의 경우에 특히 그렇습니다. 프롬프트가 필요할 수 있습니다

첫 번째 예에서는 생각의 연쇄 프롬프팅을 사용했으므로 출력에 평가가 모두 포함되고 평점을 수동으로 파싱해야 합니다. 또한 이전 섹션의 출력에서 일관되지 않은 형식을 확인하세요. 모델은 때때로 마크다운을 출력하지만 매번 출력하는 것은 아닙니다.

// Use try/catch to catch (parsing) errors
try {
  // Parse the output for a rating
  const int = /[1-5]/;
  const ratingAsString = llmOutput.match(int)[0];
  // Parse as int
  const ratingAsInt = parseInt(ratingAsString);
  // `checkRating` checks the rating is a number between 1 and 5, since the
  // regEx may catch a number like "100"
  const finalRating = checkRating(ratingAsInt);
} catch (e) {
  console.error('Error', e);
}

API 차이점

Gemini API 또는 OpenAI와 같은 LLM 클라우드 API는 일반적으로 더 큰 LLM을 가리키고, 편리한 프롬프트 기능을 제공합니다. 예: Gemini 1.5 Pro 시스템 안내JSON 모드.

현재 이러한 특성은 커스텀 모델 사용 시 항상 사용할 수 있는 것은 아닙니다. 브라우저 기반 AI API를 사용하여 액세스하는 MediaPipe LLM Inference API 또는 Transformers.js를 참고하세요. 이것이 반드시 기술적인 한계는 아니지만, 브라우저 내 AI API는 몸무게 감소

마인드 토큰의 한계

소규모 LLM을 위한 프롬프트에는 예 또는 더 자세한 내용이 포함되어야 하기 때문입니다. 시간이 더 오래 걸리고 입력 토큰을 더 많이 차지할 수 있습니다. 제한이 있습니다.

또한 모델 크기가 작을수록 입력 토큰 한도가 더 작은 경향이 있습니다. 대상 예를 들어 Gemini 1.5 Pro는 입력 토큰 100만 개 제한이 있습니다. Gemma 모델에는 8K 컨텍스트 윈도우가 있습니다.

토큰 수 함수 사용 제한에 걸리지 않도록 할 수 있습니다.

예상 시간 조정

엔지니어링 예상 시간에서 프롬프트 설계 및 테스트를 고려합니다.

API 차이와 토큰 한도로 인해 더 많은 시간과 노력이 필요할 수 있습니다. 을 사용하여 큰 LLM보다 작은 LLM에 대한 프롬프트를 작성합니다. 테스트 및 검증 LLM의 출력에 더 많은 노력이 필요할 수도 있습니다

프롬프트 엔지니어와 미세 조정 비교

웹 개발자의 경우 프롬프트 엔지니어링은 생성형 AI 커스텀 학습과 미세 조정에 대해 알아봅니다. 그러나 일부 사용 사례에서는 고급 프롬프트 엔지니어링만으로는 충분하지 않을 수 있습니다. 특히 더 작은 LLM을 사용하는 경우에 그렇습니다.

다음과 같은 경우 미세 조정을 사용하세요.

  • 특정 작업에 대해 최고의 정확성과 성능이 필요합니다. 고급 조정은 최적의 결과를 위해 모델의 내부 매개변수를 직접 조정합니다.
  • 작업과 관련된 데이터를 잘 정리하고 선택할 수 있습니다. 효과적인 미세 조정을 위해 이 데이터가 필요합니다.
  • 모델을 같은 목적으로 반복적으로 사용하는 경우 미세 조정을 수행할 수 있습니다. 특정 작업에 재사용될 수 있습니다