Trang chủ > Công nghệ AI > Nội dung chính

Nói chuyện về DSPy và kỹ thuật tự động hóa gợi ý (phần giữa)


Một chiếc đànkeo nha cai hom nay, một bình rượu, một dòng mây.

Tiếp theo phần trước99win club, viết thêm chút về công nghệ.

Trong bài viết trướckeo nha cai hom nay, " Nói chuyện về DSPy và kỹ thuật tự động hóa gợi ý (phần đầu) Trong bài viết trước99win club, chúng ta đã phân tích khung sườn mã nguồn của một chương trình tối ưu hóa DSPy điển hình. Ở phần này, chúng ta sẽ tiếp tục hai vấn đề quan trọng còn lại chưa được giải quyết:

  • Quá trình từ Signature đến Prompt.
  • Thực hiện cụ thể của MIPROv2.

Từ Signature đến Prompt.

Trang chủ của DSPy [1] và trang chủ trên Github [2]99win club, câu đầu tiên giới thiệu như sau về DSPy:

DSPy is the framework for programming—rather than prompting—language models.

DSPy là một khung làm việc sử dụng mô hình ngôn ngữ thông qua cách "lập trình" thay vì tạo câu lệnh theo cách viết gợi ý. Khung này mang đến một cách tiếp cận mới mẻ99win club, cho phép người dùng xây dựng các cấu trúc logic phức tạp và điều khiển hành vi của mô hình theo cách có hệ thống hơn. Điều này không chỉ giúp tối ưu hóa hiệu suất mà còn mở ra nhiều khả năng sáng tạo trong việc tương tác với mô hình.

Những gì được gọi là programming Cách nàykeo nha cai hom nay, trong bài phân tích mã nguồn của bài trước, chúng ta đã phát hiện ra hiện tượng này:

								
									
										cot
									 =
									 dspy
									.
									ChainOfThought
									(
									'contextkeo nha cai hom nay, question -> response')
									

								

Đoạn mã này tạo ra một phiên bản của mô-đun. cot đá gà trực tiếp app, nhưng không chỉ định rõ ràng bất kỳ nhắc từ hoặc mẫu nhắc từ nào.'contextđá gà trực tiếp app, question -> response'Dạng của nó giống như một chữ ký của hàmđá gà trực tiếp app, ý nghĩa của nó là mô-đun này nhận hai đầu vào. context question đá gà trực tiếp app, sau khi gọi LLM, sẽ xuất ra một response

Kiểu lập trình này là một lựa chọn thiết kế của DSPyđá gà trực tiếp app, với việc cố ý "che giấu" prompt thực sự phía sau. Cách làm này có thể mang lại lợi ích hoặc bất lợi, nhưng hiện tại chúng ta sẽ không đi sâu vào thảo luận về điều đó. Thay vào đó, hãy cùng xem qua prompt thực tế ẩn phía sau, điều này sẽ giúp ích rất nhiều trong việc hiểu rõ hơn quá trình tối ưu hóa tiếp theo.

Chúng ta chạy thử đoạn mã trước đó cot Mô-đun99win club, như hình dưới đây:

Ví dụ thực thi mô-đun CoT

Lưu ý dòng mã này trong hình trên:

								
									
										cot
									(
									context
									=
									context
									,
									 question
									=
									question
									)
									

								

Chúng ta thấy rằng khi gọi cot Mô-đun này truyền vào hai tham số: context question 99win club, điều này phù hợp với dạng Signature được chỉ định trước, tức là'context99win club, question -> response'

Đoạn mã này thực hiện rất nhiều tác vụ: nó kết hợp các tham số đầu vào để tạo thành một promptđá gà trực tiếp app, sau đó gọi đến mô hình ngôn ngữ lớn (LLM) và trả về kết quả phản hồi. Bên cạnh đó, nó còn kiểm tra xem các tham số có hợp lệ hay không trước khi xử lý, đảm bảo rằng mọi thứ diễn ra trơn tru và hiệu quả nhất có thể. response . Hơn nữa, đối với dspy.ChainOfThought keo nha cai hom nay, nó còn trả về thêm một trường đầu ra reasoning keo nha cai hom nay, đây là quá trình suy luận mà LLM đưa ra.

cot Quá trình tương tác giữa Module và LLM có thể được kiểm tra bằng cách gọi phương thức dspy.inspect_history. Quá trình này bao gồm prompt được đưa vào cho LLM và completion mà LLM trả về. Xem hình dưới đây (nhấn để xem kích thước lớn hơn): [Thêm mô tả chi tiết về hình ảnh nếu cần thiết99win club, ví dụ như các yếu tố nổi bật trong hình hoặc lưu ý đặc biệt]

Dấu vết thực thi ví dụ CoT

Được rồikeo nha cai hom nay, bây giờ chúng ta đã thấy chính xác điều gì được gọi là "prompt" rồi. Trong hình ảnh trên, mọi thứ trước dòng chữ "Response:" là phần prompt, còn từ dòng "Response:" trở đi chính là kết quả mà mô hình ngôn ngữ lớn (LLM) đưa ra.

lập trình thay vì tạo prompt cho mô hình ngôn ngữ

Hình trên còn có một điểm đáng chú ý khácđá gà trực tiếp app, ở dòng cuối cùng của System message:

								Given the fields `context`keo nha cai hom nay, `question`, produce the fields `response`.

Nội dung của dòng này chính là phần instruction (lệnh) Khi bộ tối ưu hóa của DSPy hoạt động99win club, một trong những bước quan trọng là nó sẽ chỉnh sửa lại hướng dẫn này. Quá trình này không chỉ đơn thuần là chỉnh sửa mà còn bao gồm việc phân tích sâu để đảm bảo rằng mọi thay đổi đều tối ưu và hiệu quả nhất có thể.

Chi tiết quá trình tối ưu hóa MIPROv2.

Sau khi đã hiểu rõ prompt thực sự trong DSPyđá gà trực tiếp app, hãy cùng tìm hiểu kỹ hơn về cách hoạt động của bộ tối ưu hóa DSPy. Quá trình này không chỉ đơn giản là một chuỗi các bước mà còn bao gồm nhiều yếu tố phức tạp và tinh vi, giúp tối đa hóa hiệu quả của hệ thống. Bằng cách phân tích từng thành phần nhỏ, chúng ta có thể thấy được sự khéo léo trong việc thiết kế và triển khai công cụ này.

Nhớ lại đoạn mã gọi trình tối ưu hóa trong bài trước:

								
									
										...
									

rag
									 =
									 RAG
									()
									

Bước này sẽ tiến hành khởi tạo Teleprompter và hoàn tất quá trình biên dịch/tối ưu hóa. Cần lưu ý rằng dspy.MIPROv2 thực chất là một phần không thể thiếu thuộc hệ thống Teleprompterđá gà trực tiếp app, đóng vai trò như nền tảng cơ bản để xây dựng các chức năng nâng cao hơn. Việc tích hợp chặt chẽ giữa hai thành phần này giúp đảm bảo tính ổn định và hiệu quả trong quá trình xử lý thông tin. Đồng thời, quá trình khởi tạo này cũng bao gồm việc kiểm tra và cấu hình các tham số quan trọng, từ đó tối ưu hóa hiệu suất hoạt động của toàn bộ hệ thống.tp
									 =
									 dspy
									.
									MIPROv2
									(
									
    metric
									=
									metric
									,
									
    auto
									=
									"light"
									,
									
    num_threads
									=
									8
									
    )
									 
optimized_rag
									 =
									 tp
									.
									compile
									(
									rag
									,
									 trainset
									=
									trainset
									,
									 valset
									=
									valset
									,
									
                           max_bootstrapped_demos
									=
									2
									,
									 max_labeled_demos
									=
									2
									,
									
                           requires_permission_to_run
									=
									False
									)
									

								

Tối ưu hóa Chỉ dẫn và Biểu thị cho Chương trình Mô hình Ngôn ngữ Nhiều Giai đoạn instruction Bên cạnh đókeo nha cai hom nay, một phần khác mà chúng ta cần đề cập đến là phương pháp few-shot. Trong bài viết blog được Heiko Hotz chia sẻ [4], cách tối ưu hóa cho phần few-shot trong dự án APE đã được đặt tên là exemplar selection

Tóm tắt nhìn chungđá gà trực tiếp app, quá trình thực thi của MIPROv2 có thể được chia thành ba bước lớn.

  • Bước 1: Thông qua cách Bootstrapkeo nha cai hom nay, tạo tập ứng cử viên few-shot.
  • Bước 2: Tạo tập ứng cử viên chỉ lệ
  • Bước 3: Từ tập hợp các ứng viênđá gà trực tiếp app, chọn ra cặp kết hợp few-shot và hướng dẫn tối ưu nhất.

Dưới đây chúng ta sẽ giới thiệu chi tiết về ba bước này thông qua ví dụ thực tế.

Bước 1: Tạo tập ứng cử viên few-shot.

Mục tiêu của bước này là tạo ra các ví dụ few-shot cho từng module con của chương trình DSPy dựa trên dữ liệu từ tậ Có hai chiến lược chính được sử dụng để thực hiện điều này. Thứ nhất99win club, chúng ta có thể áp dụng phương pháp tiền huấn luyện tự giám sát, trong đó các mẫu dữ liệu từ tập trainset sẽ được xử lý và phân loại một cách tự động để tạo ra các trường hợp điển hình cho từ Phương pháp này giúp đảm bảo rằng các ví dụ được chọn có tính đại diện cao và đa dạng về mặt nội dung. Thứ hai, một chiến lược khác là sử dụng kỹ thuật xây dựng kịch bản dựa trên ngữ cảnh. Theo cách này, mỗi module con sẽ nhận được một ngữ cảnh cụ thể từ tập dữ liệu, sau đó hệ thống sẽ tự động tạo ra các câu hỏi hoặc nhiệm vụ liên quan dựa trên ngữ cảnh đó. Điều này không chỉ giúp tăng cường khả năng thích ứng của module mà còn làm cho quá trình học trở nên hiệu quả hơn.

Chiến lược đầu tiên là lấy mẫu trực tiếp từ tậ Những ví dụ được lấy mẫu sẽ trở thành ứng viên few-shot cho mỗ Số lượng mẫu được lấy sẽ phụ thuộc vào các tham số đã được thiết lập trong đoạn mã trước đó. Trong quá trình nàyđá gà trực tiếp app, chúng ta cần đảm bảo rằng các ví dụ được chọn có tính đại diện cao và đa dạng để tăng cường khả năng học hỏi của từng mô-đun con. Việc chọn số lượng mẫu phù hợp rất quan trọng, vì nếu chọn, các mô-đun con có thể không đủ dữ liệu để học hiệu quả; ngược lại, nếu chọn quá nhiều, quá trình huấn luyện có thể trở nên chậm chạp và kém hiệu quả hơn. Sau khi xác định số lượng mẫu cần lấy, chúng tôi sử dụng một phương pháp ngẫu nhiên để đảm bảo tính công bằng và tránh sự thiên vị trong việc chọn mẫu. Điều này giúp mỗi mô-đun con nhận được một tập hợp dữ liệu đa dạng, từ đó cải thiện khả năng tổng quát hóa và giảm thiểu rủ Tóm lại, chiến lược này không chỉ đơn giản hóa quy trình huấn luyện mà còn tạo điều kiện cho việc tối ưu hóa hiệu suất của từng mô-đun con trong hệ thống. max_labeled_demos Được chỉ định bởi.

Chiến lược thứ hai99win club, thực sự được gọi là Bootstrap Cách thực hiện rất đơn giản: từ tập dữ liệu trainset99win club, bạn chọn ngẫu nhiên một số ví dụ và đưa chúng vào chương trình DSPy. Điều này giúp tạo ra sự đa dạng trong quá trình học máy, cho phép mô hình tiếp cận với nhiều tình huống khác nhau một cách ngẫu nhiên. Sự ngẫu nhiên trong việc chọn example này đóng vai trò quan trọng, vì nó đảm bảo rằng mô hình không bị "nhớ" hoặc tập trung vào một số mẫu cụ thể mà quên đi các trường hợp còn lại. Nhờ đó, hiệu suất tổng thể của hệ thống sẽ được cải thiện đáng kể và khả năng áp dụng trong thực tế cũng trở nên linh hoạt hơn. rag Các module con sẽ được thực thi trong module tương ứng và quá trình thực thi sẽ ghi lại đầu vào và đầu ra của từ Nếu đầu ra cuối cùng của chương trình DSPy đạt tiêu chuẩn đánh giá được xác định bởi Metric99win club, thì mỗi module con sẽ coi đầu vào và đầu ra của mình như là các ứng viên cho phương pháp few-shot.

Nguyên nhân cần áp dụng chiến lược Bootstrap này là vì quá trình tối ưu hóa trong DSPy được thực hiện cho toàn bộ chương trình DSPykeo nha cai hom nay, chứ không chỉ riêng lẻ cho từng mô-đun LLM. Điều này đòi hỏi một cách tiếp cận tổng thể, nơi mà mỗi phần tử cần phối hợp chặt chẽ để đạt được hiệu quả tối ưu nhất cho hệ thống.Theo DSPyđá gà trực tiếp app, một chương trình được coi là sự kết hợp của nhiều Module, và việc thực thi toàn bộ chương trình diễn ra theo một pipeline đa giai đoạn (multi-stage). Mỗi module đóng vai trò như một bước quan trọng trong chuỗi này, tạo nên sự phối hợp nhịp nhàng để đạt được mục tiêu cuối cùng của chương trình. Điều này giúp cho việc quản lý và tối ưu hóa hiệu suất trở nên linh hoạt hơn, cho phép các nhà phát triển dễ dàng điều chỉnh từng phần mà không ảnh hưởng đến toàn bộ hệ thống.Trainset được thiết kế để có thể áp dụng đánh dấu toàn diện cho toàn bộ chương trình từ đầu đến cuốikeo nha cai hom nay, và thường không bao gồm thông tin đánh dấu cho các kết quả Do đó, chiến lược Bootstrap về cơ bản là việc sử dụng dữ liệu được đánh dấu trong trainset theo cách toàn phần, sau đó tự động hóa bằng chương trình để tạo ra một phần dữ liệu đánh dấu cho các kết quả Điều này giúp tiết kiệm rất nhiều công sức cần thiết cho việc đánh dấu thủ công đối với các kết quả Với phương pháp này, quá trình phát triển và đào tạo chương trình trở nên hiệu quả hơn đáng kể.

Số lượng ví dụ few-shot được tạo ra cho mỗi Module dựa trên chiến lược Bootstrap sẽ được xác định bởi đoạn mã trước đó. Điều này có thể được tùy chỉnh dựa trên các tham số đã thiết lập trong đoạn mãkeo nha cai hom nay, cho phép người dùng linh hoạt điều chỉnh số lượng mẫu cần thiết để đạt được hiệu suất tối ưu. Nhờ vào sự tối ưu hóa này, hệ thống có thể cung cấp một lượng dữ liệu phù hợp cho việc đào tạo và thử nghiệm mà không gây lãng phí tài nguyên hoặc làm giảm chất lượng học máy. max_bootstrapped_demos Được chỉ định bởi.

Cũng có thể nói rằngđá gà trực tiếp app, chiến lược đầu tiên mà bạn vừa đề cập, khi trực tiếp lấy mẫu từ tập dữ liệu trainset làm ứng viên dạng few-shot, sẽ rất khó phát huy hiệu quả thực sự nếu chương trình DSPy bao gồm nhiề Lý do là, thông tin nhãn dự kiến mà module giữa cần nhận, có khả năng rất cao là không tồn tại trong tậ Điều này khiến việc huấn luyện và đánh giá trở nên thiếu chính xác, vì các module ở giữa không có đủ thông tin tham chiếu để hoạt động đúng cách.

Chiến lược Bootstrap có thể được thực hiện nhiều lần. Miễn là tập trainset đủ lớnđá gà trực tiếp app, thuật toán MIPROv2 sẽ thực hiện việc trộn (shuffle) tập trainset một lần sau mỗi lần thực thi chiến lược Bootstrap, từ đó tạo ra một tập ứng viên few-shot mới. Điều này cho phép hệ thống liên tục tối ưu hóa và cải thiện hiệu suất bằng cách tiếp cận dữ liệu theo những cách khác nhau trong mỗi vòng lặp, đảm bảo rằng quá trình học không bị giới hạn trong cùng một cấu trúc dữ liệu ban đầu.

Quay trở lại việc thực thi mã trước đó99win club, sau Bước 1, tập ứng cử viên few-shot được tạo ra như sau:

Kết quả hiển thị kết quả tối ưu hóa Bootstrap của mô-đun rag.

Giải thích đơn giản về kết quả của hình trên:

Kết quả của demo_candidates cho thấy rag Chương trình chỉ có một mô-đun (thực tế là một dspy.ChainOfThought Ví dụ như trường hợp này)keo nha cai hom nay, có số hiệu là 0, và Bước 1 đã tạo ra 5 tập thí nghiệm few-shot tiềm năng cho Module này.

Kết quả từ demo_candidates[0] cho thấy năm tập hợp few-shot ứng viên duy nhất của mô-đun nàyđá gà trực tiếp app, trong đó mỗi tập hợp ứng viên chứa hai ví dụ (được xác định bởi tham số). Mỗi cặp ví dụ được thiết kế một cách cẩn thận để hướng dẫn mô hình đi theo hướng đúng đắn khi thực hiện nhiệm vụ, đảm bảo hiệu suất tối ưu trong quá trình huấn luyện. max_bootstrapped_demos max_labeled_demos Được chỉ định). Nếu mọi người quan sát kỹđá gà trực tiếp app, sẽ phát hiện ra rằng example có hai dạng:

  • Một dạng là mang augmented Trường này cho biết example này được tạo ra bởi chiến lượ
  • Loại kia là không mang augmented Trường này cho biết example này được lấy trực tiếp từ trainset.

Trong số 5 tập dữ liệu ít mẫu nàykeo nha cai hom nay, không phải tất cả sẽ được sử dụng trong prompt cuối cùng. Còn có một vòng sàng lọc nữa trước khi đi đến quyết định cuối cùng. Trong quá trình phát triển prompt, các nhà nghiên cứu thường sẽ đánh giá kỹ lưỡng từng tập dữ liệu ít mẫu để đảm bảo rằng chỉ những tập phù hợp nhất mới được giữ lại. Điều này giúp tối ưu hóa hiệu quả và độ chính xác của mô hình trong việc xử lý các nhiệm vụ cụ thể. Vòng sàng lọc cuối cùng không chỉ dựa vào số lượng dữ liệu mà còn dựa trên chất lượng và tính đại diện của từng tập. Các tập dữ liệu có thể bị loại nếu chúng không đáp ứng các tiêu chí về độ đa dạng hoặc tính liên quan cao với mục tiêu cuối cùng của mô hình.

Bước 2: Tạo tập ứng cử viên chỉ lệnh.

Ở bước này99win club, cho mỗi module của chương trình và mỗi tập hợp ứng viên few-shot, sẽ tạo ra một hướng dẫn (instruction) ứng viên hoàn toàn mới. Mỗi hướng dẫn này được thiết kế riêng để phù hợp với ngữ cảnh cụ thể của module và tập hợp few-shot tương ứng, từ đó mở ra nhiều khả năng mới trong việc tối ưu hóa hiệu suất của chương trình.

Bạn có thể giải thích cách các instruction mới được tạo ra như thế nào? Hãy cùng xem qua một ví dụ thực tế. Hình ảnh dưới đây minh họa quá trình giao tiếp giữa hệ thống và mô hình ngôn ngữ lớn (LLM) trong một lần tạo instruction (bao gồm cả meta-prompt và đầu ra của LLM):

Meta-prompt tối ưu hóa chỉ lệnh của mô-đun rag.

Hình ảnh phía trên cho thấy meta-prompt chứa đựng vô số thông tinđá gà trực tiếp app, điều này thực sự rất khơi gợi suy nghĩ. Hiện tại, chúng ta hãy cùng tìm hiểu sâu hơn về những nội dung đa dạng được thể hiện trong hình đó. Có thể thấy, mỗi chi tiết đều mang đến một ý nghĩa riêng biệt và việc phân tích từng phần sẽ giúp chúng ta nắm bắt được toàn diện bức tranh lớn hơn.

Trước hếtkeo nha cai hom nay, trong hình trên, dòng chữ "Response:" và những gì nằm phía trước nó chính là meta-prompt mà chúng ta đã đề cập đến trong bài viết trước. Còn phần sau "Response:", đó là kết quả đầu ra được tạo ra bởi mô hình ngôn ngữ lớn (LLM).

Trong meta-prompt nàykeo nha cai hom nay, chúng ta có thể nhận thấy rằng để tạo ra các chỉ dẫn mới, DSPy đã cung cấp cho mô hình ngôn ngữ lớn (LLM) nhiều thông tin tham khảo khác nhau. Những thông tin này bao gồm: Không chỉ vậy, DSPy còn bổ sung thêm một số dữ liệu cụ thể từ các nguồn đa dạng, chẳng hạn như các mẫu câu thường được sử dụng trong giao tiếp hàng ngày, các cấu trúc câu phức tạp và cả những tình huống thực tế mà người dùng có thể gặp phải. Điều này giúp LLM không chỉ hiểu rõ hơn về ngữ cảnh mà còn cải thiện khả năng đưa ra phản ứng phù hợp trong nhiều tình huống khác nhau. Các yếu tố tham chiếu khác cũng được đề cập đến, chẳng hạn như cách sử dụng từ vựng chuyên ngành hoặc phong cách viết tùy chỉnh dựa trên đối tượng người đọc. Tất cả những điều này đều đóng vai trò quan trọng trong việc tối ưu hóa hiệu quả của quá trình tạo ra các chỉ dẫn mới.

  • Mô tả tập dữ liệuđá gà trực tiếp app, tức là [[ ## dataset_description ## ]] Trường này. Thực tế đây là một mô tả bằng ngôn ngữ tự nhiên về trainset Điều này cũng được tổng hợp và tạo ra bởi LLM.
  • Mã nguồn và mô tả chương trìnhđá gà trực tiếp app, tức là [[ ## program_code ## ]] [[ ## program_description ## ]] Trường.
  • Chỉ lệnh cơ bản làm điểm tham chiếu để tạo99win club, tức là [[ ## basic_instruction ## ]] Trường.
  • Hướng dẫn tạo tipkeo nha cai hom nay, nó được sử dụng để hướng dẫn hướng đi và phong cách tạo chỉ lệnh, tức là [[ ## tip ## ]] Trường.

Tip tạo chỉ lệnhđá gà trực tiếp app, khung DSPy cung cấp một số cấu hình sẵn sàng, như sau:

								
									
										TIPS
									 =
									 {
									
        "none"
									:
									 ""
									,
									
        "creative"
									:
									 "Don't be afraid to be creative when creating the new instruction!"
									,
									
        "simple"
									:
									 "Keep the instruction clear and concise."
									,
									
        "description"
									:
									 "Make sure your instruction is very informative and descriptive."
									,
									
        "high_stakes"
									:
									 "The instruction should include a high stakes scenario in which the LM must solve the task!"
									,
									
        "persona"
									:
									 'Include a persona that is relevant to the task in the instruction (ie. "You are a ...")'
									,
									
    }
									

								

Trong hình ảnh phía trên99win club, khi tạo ra instruction, đã sử dụng "gợi ý sáng tạo" có tên là “creative”, điều này khuyến khích LLM (Language Model) tạo ra các instruction có tính sáng tạo hơn. Điều này giúp cho model không chỉ dựa vào thông tin cơ bản mà còn mở rộng khả năng tư duy và sáng tạo trong việc đưa ra hướng dẫn mới mẻ và độc đáo. [[ ## proposed_instruction ## ]] Giá trị của trường này là chỉ lệnh cuối cùng được tạo ra dưới sự hướng dẫn.

Sau khi hoàn thành toàn bộ Bước 2đá gà trực tiếp app, tập ứng cử viên chỉ lệnh được tạo ra như sau:

Tập ứng cử viên chỉ lệnh do mô-đun rag tạo ra.

Cũng giống như trước đóđá gà trực tiếp app, giải thích đơn giản về kết quả của hình trên:

Kết quả của instruction_candidates cho thấy rag Chương trình chỉ có một mô-đun (thực tế là dspy.ChainOfThought Bạn có thể thấy ví dụ minh họa được đánh số là 0đá gà trực tiếp app, và ở bước 2, mô-đun này đã tạo ra 5 hướng dẫn ứng viên tiềm năng.

Hình ảnh phía sau cho thấy chi tiết nội dung của 5 chỉ dẫn được tạo rakeo nha cai hom nay, và có thể nhận thấy rằng chúng khác biệt khá nhiều so với nhau trong cách diễn đạt.

Bước 3: Lọc ra sự kết hợp best few-shot và chỉ lệnh.

Sau hai bước đầu tiênkeo nha cai hom nay, bộ tối ưu đã tạo ra 5 phương án (instruction) tiềm năng và 5 tập hợp ví dụ few-shot (mỗi tập hợp bao gồm 2 ví dụ). Bước cuối cùng này, bộ tối ưu sẽ kết hợp ngẫu nhiên các phương án instruction với các tập hợp few-shot và lựa chọn sự kết hợp có điểm đánh giá (Evaluate score) cao nhất, từ đó đưa ra chương trình tối ưu nhất. Điều đặc biệt là trong quá trình này, mỗi sự kết hợp không chỉ được đánh giá dựa trên hiệu quả thực tế mà còn cân nhắc khả năng tương thích giữa các ví dụ trong tập few-shot với nội dung của phương á Điều này giúp đảm bảo rằng chương trình được tạo ra không chỉ đạt điểm số cao mà còn mang lại kết quả thực tiễn tốt nhất.

Quá trình này có chút tương tự việc tối ưu hóa tham số siêu (hyperparameter optimization) trong học máy truyền thống. Trong DSPyđá gà trực tiếp app, bước này được thực hiện bằng cách sử dụng một framework mã nguồn mở có tên là Optuna [5]. Optuna giúp người dùng tìm kiếm không gian tham số hiệu quả và tự động chọn ra các giá trị tốt nhất cho mô hình, từ đó tối ưu hóa hiệu suất tổng thể của hệ thống. Đây thực sự là một công cụ mạnh mẽ trong việc tối ưu hóa quy trình học sâu.

Dưới đây là nhật ký thực thi của quá trình này:

Kết quả tối ưu hóa tham số tốt nhất của mô-đun rag.

Dựa trên hình ảnh phía trênđá gà trực tiếp app, chương trình đã thực hiện tổng cộng 7 lần thử nghiệm tối ưu hóa (trial), với điểm đánh giá ban đầu là 52.73 và cuối cùng đạt được 53.5. Tuy nhiên, do hạn chế về năng lực tính toán, cấu hình cụ thể cũng như nhiều yếu tố khác, sự cải thiện tổng thể không quá nổi bật (mặc dù mục tiêu chính của bài viết này là để minh họa quy trình vận hành toàn diện của DSPy). Dù vậy, kết quả vẫn cho thấy tiềm năng trong việc tối ưu hóa nếu có thêm nguồn lực và thời gian nghiên cứu sâu hơn.

Cuối cùng99win club, chúng tôi in ra chương trình tối ưu mà chúng tôi đã tìm được, bao gồm các lệnh (instructions) và tập dữ liệu few-shot liên quan, cụ thể như sau:

Chỉ lệnh và best few-shot được chọn sau khi tối ưu hóa mô-đun rag.

Tiếp theo

Cho đến nayđá gà trực tiếp app, chúng ta đã cơ bản làm rõ các khái niệm cơ bản về chương trình DSPy và cách một chương trình DSPy điển hình hoạt động. Trong bài viết tiếp theo, chúng ta sẽ đi sâu hơn vào phân tích, bao gồm sự khác biệt giữa DSPy và APE, những bài học quý giá từ cách tiếp cận kỹ thuật tương tự này, cũng như một số vấn đề tiềm ẩn có thể xảy ra. Những khám phá mới mẻ này sẽ mở ra góc nhìn rộng hơn về tiềm năng của công cụ này trong tương lai gần.

(Kết thúc nội dung chínhđá gà trực tiếp app, tiếp tục ở phần sau)

Tài liệu tham khảo:

Các bài viết được chọn lọc khác


Bài viết gốcđá gà trực tiếp app, vui lòng ghi rõ nguồn và bao gồm mã QR bên dưới! Nếu không, từ chối tái bản!
Liên kết bài viết: /ejlxg2qh.html
Hãy theo dõi tài khoản Weibo cá nhân của tôi: Tìm kiếm tên "Trương Tiết Lệ" trên Weibo.
Tài khoản WeChat của tôi: tielei-blog (Trương Tiết Lệ)
Bài trước: Nói chuyện về DSPy và kỹ thuật tự động hóa gợi ý (phần đầu)
Bài sau: Phần tiếp theo của DSPy: Khám phá thêm về o1, Lượng tính trong Thời gian Suy luận (Inference-time Compute) và Khả năng Lý luận (Reasoning) Trong phần trước, chúng ta đã đi sâu vào các khái niệm cơ bản của DSPy. Ở đây, chúng ta sẽ mở rộng tầm nhìn để tìm hiểu thêm về ngôn ngữ lập trình o1, vốn được thiết kế để tối ưu hóa hiệu suất và khả năng quản lý tài nguyên. O1 không chỉ đơn thuần là một công cụ lập trình, mà còn là một nền tảng giúp người dùng dễ dàng xây dựng ứng dụng phức tạp mà không cần đến kiến thức chuyên sâu về lập trình. Bên cạnh đó, chúng ta cũng sẽ thảo luận về lượng tính trong thời gian suy luận (Inference-time Compute). Điều này liên quan đến việc đo lường và tối ưu hóa lượng tài nguyên cần thiết khi mô hình AI thực hiện việc đưa ra dự đoán. Hiểu rõ vấn đề này rất quan trọng khi bạn muốn tạo ra một hệ thống có khả năng xử lý thông tin nhanh chóng và chính xác. Cuối cùng, chúng ta sẽ khám phá vai trò của lý luận (Reasoning) trong lĩnh vực AI. Lý luận không chỉ là khả năng đưa ra quyết định dựa trên dữ liệu, mà còn bao gồm khả năng kết nối các yếu tố khác nhau để tạo ra những kết luận mới mẻ. Đây là yếu tố then chốt để tạo ra những hệ thống AI thực sự thông minh và linh hoạt. Với tất cả những chủ đề trên, hy vọng rằng bạn sẽ có cái nhìn sâu sắc hơn về cách các công nghệ AI đang phát triển và cách chúng có thể ảnh hưởng đến tương lai của con người. Hãy cùng tiếp tục hành trình khám phá này!

Bài viết mới nhất