Kỹ thuật câu lệnh thực tế cho các LLM nhỏ hơn

Maud Nalpas
Maud Nalpas

Hiệu quả của mô hình ngôn ngữ lớn phụ thuộc rất nhiều vào hướng dẫn mà chúng tôi đưa ra. Kỹ thuật nhắc nhở là quá trình tạo ra câu hỏi theo cách thu được kết quả tốt nhất từ một LLM. Đây là một bước quan trọng trong việc triển khai tính năng dựa trên mô hình ngôn ngữ lớn (LLM).

Kỹ thuật đưa ra lời nhắc là một quy trình lặp lại. Nếu đã thử nghiệm với nhiều LLM khác nhau, bạn có thể nhận thấy rằng bạn cần điều chỉnh câu lệnh để đạt được kết quả tốt hơn.

Điều này cũng đúng với các mô hình có kích thước khác nhau.

Những giao diện nhắn tin sử dụng các LLM lớn (chẳng hạn như Gemini hoặc ChatGPT) thường có thể cho ra kết quả hài lòng mà không cần tốn nhiều công sức nhắc. Tuy nhiên, khi làm việc với một LLM mặc định, nhỏ hơn và không được điều chỉnh tốt, bạn cần điều chỉnh phương pháp của mình.

Các LLM nhỏ hơn sẽ kém hiệu quả hơn và có nguồn thông tin nhỏ hơn để thu thập.

"Các mô hình ngôn ngữ lớn nhỏ" có nghĩa là gì?

Việc xác định kích thước LLM rất phức tạp và không phải lúc nào nhà sản xuất cũng được công bố.

Trong tài liệu này, "các LLM nhỏ hơn" có nghĩa là bất kỳ mô hình nào có các tham số dưới 30B. Cho đến nay, các mô hình có tham số từ vài triệu đến vài tỷ thực tế có thể chạy trong trình duyệt, trên các thiết bị cấp người tiêu dùng.

Các LLM nhỏ hơn được sử dụng ở đâu?

  • AI tạo sinh trên thiết bị/trong trình duyệt, chẳng hạn như nếu bạn đang sử dụng Gemma 2B với API suy luận LLM của MediaPipe (ngay cả khi phù hợp với các thiết bị chỉ dùng CPU) hoặc DistilBert trong trình duyệt bằng Transformers.js. Bạn chỉ có thể tải mô hình và chạy dự đoán trên thiết bị của người dùng với các LLM nhỏ hơn này, để có thể tải xuống hợp lý trên web và phù hợp với các hạn chế về bộ nhớ và GPU/CPU của thiết bị.
  • AI tạo sinh phía máy chủ tuỳ chỉnh. Các mô hình có trọng số mở nhỏ như Gemma 2B, Gemma 7B hoặc Gemma 27B có sẵn để bạn chạy trên máy chủ của riêng mình (và tinh chỉnh tuỳ ý).

Bắt đầu

Những giao diện của Chat sử dụng các LLM lớn (như Gemini hoặc ChatGPT) thường có thể cho ra kết quả hài lòng mà không cần tốn nhiều công sức nhắc. Tuy nhiên, khi làm việc với các LLM nhỏ, bạn cần điều chỉnh phương pháp của mình. Các LLM nhỏ hơn sẽ kém hiệu quả hơn và có nguồn thông tin nhỏ hơn để thu thập.

Cung cấp hướng dẫn về bối cảnh và định dạng chính xác

Để đạt được kết quả tối ưu với các LLM nhỏ, hãy tạo những câu lệnh chi tiết và cụ thể hơn.

Ví dụ:

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

Review: "${review}"
Rating:
Thông tin đầu vào (xem xét) Đầu ra (điểm xếp hạng)
  LLM lớn hơn (Gemini 1.5) LLM nhỏ hơn (Gemma 2B)
Thực sự thích cảm giác vừa vặn! Phân phối trọng lượng tốt và thoải mái đến bất ngờ ngay cả trên những chuyến đi bộ cả ngày. Sẽ giới thiệu cho bạn. 5 4/5 sao**
Quai nó lỏng lẻo, nó bắt đầu luồn vào vai tôi dưới những tải trọng nặng nề. 1 5/2

Mặc dù Gemini 1.5 cung cấp đầu ra mong muốn bằng câu lệnh đơn giản này, nhưng kết quả của Gemma lại không đáp ứng được:

  • Định dạng không chính xác. Chúng tôi đã yêu cầu một số nguyên cho điểm xếp hạng.
  • Điểm xếp hạng có vẻ không chính xác cho lắm. Bài đánh giá đầu tiên đủ nhiệt tình để thể hiện rằng đó là bài đánh giá 5 sao.

Để khắc phục vấn đề này, chúng ta cần sử dụng các kỹ thuật nhắc nhở, chẳng hạn như lời nhắc một lần, một vài lần và nhiều lần cũng như lời nhắc theo chuỗi. Chúng tôi cũng phải cung cấp hướng dẫn rõ ràng về định dạng và nhất định rằng mô hình phải sử dụng đầy đủ mức phân loại.

Ví dụ:

`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`;
Thông tin đầu vào (xem xét) Đầu ra với một LLM nhỏ hơn (Gemma 2B)

Thực sự thích cảm giác vừa vặn! Phân bổ trọng lượng ổn định và thoải mái đáng kinh ngạc ngay cả trên những chuyến đi bộ cả ngày. Sẽ giới thiệu cho bạn.

Phân tích: Bài đánh giá này mang tính tích cực và nhấn mạnh vào độ phù hợp và thoải mái của sản phẩm, cho thấy mức độ hài lòng rất lớn với sản phẩm. Điều này cho biết ứng dụng của bạn có điểm xếp hạng cao.

Điểm xếp hạng (số nguyên): 5

Quai nó lỏng lẻo, nên chúng bắt đầu luồn vào vai tôi dưới những vật nặng.

**Phân tích:** Bài đánh giá này nhấn mạnh một vấn đề đáng kể về sự thoải mái đối với dây đeo. Báo cáo này cũng cho thấy sản phẩm có thể không phù hợp với tải trọng nặng hoặc các chuyến đi chơi kéo dài.

**Điểm xếp hạng:** 1 (kém nhất)

Câu lệnh của chúng tôi được thiết kế chi tiết hơn, kết hợp với kỹ thuật nhắc theo chuỗi và gợi ý sau một vài lần nhấp để đưa ra điểm xếp hạng chính xác hơn.

Dự kiến phân tích cú pháp đầu ra theo cách thủ công

Mặc dù bạn phải luôn dọn dẹp và diễn giải kết quả của một LLM theo cách thủ công, nhưng điều này đặc biệt đúng với các LLM nhỏ hơn, có thể tạo ra kết quả không chính xác hơn và có thể cần nhắc liên tục.

Trong ví dụ đầu tiên, chúng tôi sử dụng gợi ý liên tục theo chuỗi, vì vậy, kết quả bao gồm cả bản phân tích và điểm xếp hạng, đồng thời chúng ta cần phân tích cú pháp theo cách thủ công đối với điểm xếp hạng. Ngoài ra, xin lưu ý định dạng không nhất quán trong đầu ra ở phần trước: mô hình đôi khi cho ra kết quả Markdown, nhưng không phải lúc nào cũng vậy.

// 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);
}

Điểm khác biệt của Mind API

Các LLM API đám mây như API Gemini hoặc OpenAI thường là điểm truy cập vào các LLM lớn hơn, cung cấp các tính năng nhắc hữu ích. Ví dụ: Gemini 1.5 Pro cung cấp hướng dẫn về hệ thốngchế độ JSON.

Hiện tại, bạn không phải lúc nào cũng có thể sử dụng các tính năng này để sử dụng mô hình tuỳ chỉnh hoặc các LLM nhỏ hơn được truy cập bằng API AI trong trình duyệt, chẳng hạn như MediaPipe LLM Inference API hoặc Transformers.js. Mặc dù đây không nhất thiết là giới hạn về kỹ thuật, nhưng các API AI trong trình duyệt có xu hướng tinh gọn hơn.

Hạn mức của mã thông báo

Vì lời nhắc của bạn về các LLM nhỏ hơn cần bao gồm ví dụ hoặc hướng dẫn chi tiết hơn, nên lời nhắc có thể sẽ dài hơn và chiếm nhiều giới hạn mã thông báo đầu vào hơn (nếu có).

Ngoài ra, các mô hình nhỏ hơn thường có giới hạn mã thông báo đầu vào nhỏ hơn. Ví dụ: Gemini 1.5 Pro có giới hạn 1 triệu mã thông báo đầu vào trong khi các mô hình Gemma có cửa sổ ngữ cảnh 8K.

Dùng hàm đếm mã thông báo để tránh đạt đến giới hạn.

Điều chỉnh số liệu ước tính về thời gian

Tính đến việc thiết kế và kiểm thử nhanh chóng trong thông tin ước tính thời gian kỹ thuật.

Do sự khác biệt về API và giới hạn mã thông báo, bạn có thể sẽ cần nhiều thời gian và công sức hơn để tạo lời nhắc cho một LLM nhỏ hơn một LLM lớn hơn. Việc kiểm thử và xác thực kết quả của LLM cũng có thể tốn nhiều công sức hơn.

Kỹ sư nhắc hay tinh chỉnh?

Đối với các nhà phát triển web, kỹ thuật đưa ra lời nhắc là cách ưu tiên của chúng tôi để tận dụng AI tạo sinh thay vì quá trình huấn luyện và tinh chỉnh tuỳ chỉnh. Tuy nhiên, ngay cả kỹ thuật câu lệnh nâng cao cũng có thể là chưa đủ trong một số trường hợp sử dụng, đặc biệt là khi bạn sử dụng một mô hình ngôn ngữ lớn (LLM) nhỏ hơn.

Sử dụng tính năng tinh chỉnh khi:

  • Bạn cần có độ chính xác và hiệu suất vượt trội cho một nhiệm vụ cụ thể. Tính năng tinh chỉnh trực tiếp điều chỉnh các tham số nội bộ của mô hình để có kết quả tối ưu.
  • Bạn có dữ liệu được chọn lọc tốt, phù hợp với nhiệm vụ của bạn, đã được gắn nhãn là dữ liệu đầu ra ưu tiên. Bạn cần dữ liệu này để tinh chỉnh hiệu quả.
  • Bạn sử dụng mô hình này nhiều lần cho cùng một mục đích. Bạn có thể thực hiện việc tinh chỉnh một lần và sử dụng lại cho một tác vụ cụ thể.