小規模な LLM 向けの実用的なプロンプト エンジニアリング

Maud Nalpas
Maud Nalpas

大規模言語モデルの有効性は、モデルの指示に大きく依存します。 与えることもできます。プロンプト エンジニアリングは、 LLM から最適な出力を得られるように質問を作成するプロセスです。 これは、LLM ベースの機能を実装するための重要なステップです。

プロンプト エンジニアリングは反復プロセスです。すでに お気づきでしょう。プロンプトを微調整し、 向上します

これは、さまざまなサイズのモデルにも当てはまります。

Gemini などの大規模な LLM を活用したチャット インターフェース 多くの場合、最小限のプロンプトの労力で満足のいく結果を生成できます。 ただし、ファインチューニングされていないデフォルトの小規模 LLM では、 アプローチを調整する必要があります

LLM が小さいほど有効性が低く、引き出す情報プールも少なくなります。

「LLM が小さい」とはどういう意味でしょうか?

LLM のサイズの定義は複雑で、必ずしもそうとは限らない メーカーにより開示されています

このドキュメントでは、「より小規模な LLM」を300 億パラメータ未満のすべてのモデルです。 現在では、パラメータの数が数百万から数十億のモデルでも、 ブラウザ、一般消費者向けデバイスで実行されるのが現実的です。

どこでより小規模な LLM が使用されるか?

  • オンデバイス/ブラウザ内生成 AI(Gemma 2B を使用している場合など) MediaPipe の LLM Inference API を使用 (CPU のみのデバイスにも最適)または DistilBert を Transformers.js。 モデルのダウンロードと推論の実行は、ユーザーのデバイスでのみ可能です。 ウェブ ダウンロードを合理的な範囲に抑えるために、小規模な LLM で デバイスのメモリや 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)
ぴったりフィット。重さを適切に配分。1 日のトレッキングでも快適です。おすすめする。 5 星 4 個中 4 個**
ストラップが薄くて、重い負荷がかかると私の肩に食い込み始めました。 1 2/5

Gemini 1.5 はこのシンプルなプロンプトで目的の出力を提供しますが、Gemma の 出力が以下のように異なります。

  • 形式が正しくありません。評価に整数をリクエストしました。
  • 評価が正確ではないようです。最初のレビューは、5 つ星のレビューを示すほどの熱意を持っている。

この問題を解決するには、プロンプト エンジニアリング手法を使用します。 ワンショット プロンプト、少数ショット プロンプト、マルチショット プロンプト Chain-of-Thought プロンプトなどです。 また、明確な形式の指示を提供し、モデルがトレーニングに 評価します。

例:

`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 では特に洗練されていない結果が生成される可能性があり、 Chain-of-Thought プロンプトが必要になる場合があります。

最初の例では思考の連鎖プロンプトを使用したため、 手動で解析する必要がありますまた、 前のセクションでは、出力の形式に一貫性がないことに注意してください。モデルはマークダウンを出力することがありますが、毎回ではありません。

// 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 を使用してアクセスする小規模な LLM にも使用できます。 MediaPipe LLM Inference API または Transformers.js を使用します。 これは必ずしも技術的な制限ではありませんが、ブラウザ内 AI API は 無駄を省きます。

マインドトークンの上限

小規模な LLM のプロンプトには、例やより詳細な例を含める必要があるため 完了すると、より時間がかかり、入力トークンを大量に消費する可能性が高くなります。 表示されます。

また、小さいモデルほど、入力トークンの上限が小さくなる傾向があります。対象 たとえば、Gemini 1.5 Pro の入力トークンの上限は 100 万です。 Gemma モデルには 8K のコンテキスト ウィンドウがあります。

トークン カウント関数を使用する 費用が上限に達しないようにします

所要時間の見積もりを調整する

エンジニアリング時間の見積もりでプロンプト設計とテストを考慮します。

API の違いとトークンの制限により、より多くの時間と労力が必要になる可能性があります プロンプトを作成することです。テストと検証 LLM の出力には労力がかかる可能性があります。

プロンプト エンジニアか、それともファインチューニングか。

ウェブ デベロッパーにとって、プロンプト エンジニアリングは、 生成 AI カスタム トレーニングとファインチューニングに注力できます。 ユースケースによっては高度なプロンプト エンジニアリングだけでは不十分な場合もあります。 少人数の大規模言語モデルの場合はなおさらです

ファインチューニングは次のような場合に使用します。

  • 特定のタスクに対して最高水準の精度とパフォーマンスを必要とする。ファイン チューニングでは、最適な結果を得るためにモデルの内部パラメータを直接調整します。
  • タスクに関連する、適切にキュレートされた 出力が生成されます。このデータは効果的なファインチューニングに必要です。
  • 同じ目的でモデルを繰り返し使用する。ファインチューニングは 特定のタスクに再利用できます。