- Trong bối cảnh nhu cầu trợ lý lập trình ngày càng tăng, Meta đã công bố Code Llama, mở rộng các lựa chọn tạo mã, hoàn thiện mã và gỡ lỗi dựa trên mô hình mở
- Mô hình này là phiên bản Llama 2 được huấn luyện bổ sung bằng dữ liệu mã nguồn, có thể xử lý các tác vụ lập trình từ cả mã nguồn lẫn prompt ngôn ngữ tự nhiên
- Được cung cấp với các kích thước 7B, 13B, 34B và 70B; mô hình 70B được công bố bổ sung vào ngày 29/1/2024 như mô hình lớn nhất và có hiệu năng cao nhất trong dòng Code Llama
- Được chia thành mô hình cơ bản, mô hình chuyên cho Python và biến thể Instruct dành cho chỉ dẫn bằng ngôn ngữ tự nhiên; nên lựa chọn theo độ trễ, hiệu năng và mục đích sử dụng
- Miễn phí cho nghiên cứu và sử dụng thương mại, nhưng cần tuân thủ giấy phép và chính sách sử dụng được phép, đồng thời thực hiện đánh giá an toàn đối với việc tạo mã
Các tác vụ lập trình mà Code Llama hướng tới
- Code Llama là mô hình ngôn ngữ lớn dành cho lập trình, có thể tạo mã từ prompt dạng văn bản
- Trong số các LLM được công bố, mô hình này hướng tới hiệu năng tiên tiến cho các tác vụ mã nguồn, và có tiềm năng giúp workflow của lập trình viên nhanh hơn, hiệu quả hơn
- Có thể được dùng như một công cụ năng suất và giáo dục, giúp hạ thấp rào cản cho người học lập trình và hỗ trợ lập trình viên viết phần mềm vững chắc hơn, được tài liệu hóa tốt hơn
- Meta công bố Code Llama theo giấy phép cộng đồng giống Llama 2
Huấn luyện bổ sung Llama 2 bằng dữ liệu mã nguồn
- Code Llama là phiên bản chuyên cho mã nguồn được tạo bằng cách huấn luyện thêm Llama 2 trên tập dữ liệu chuyên biệt cho code
- Có thể nhận cả mã nguồn và prompt ngôn ngữ tự nhiên làm đầu vào, rồi tạo ra mã nguồn và ngôn ngữ tự nhiên liên quan đến mã
- Prompt ví dụ: “Hãy viết một hàm in ra dãy Fibonacci”
- Cũng có thể dùng để hoàn thiện mã và gỡ lỗi
- Các ngôn ngữ được hỗ trợ gồm Python, C++, Java, PHP, Typescript(JavaScript), C#, Bash
Tiêu chí lựa chọn theo kích thước và ngữ cảnh
- Code Llama được cung cấp với các kích thước 7B, 13B, 34B, 70B tham số
- Các mô hình 7B, 13B, 34B được huấn luyện trên 500B token mã nguồn và dữ liệu liên quan đến mã; mô hình 70B được huấn luyện trên 1T token
- Các mô hình cơ bản và Instruct của 7B và 13B cũng được huấn luyện khả năng fill-in-the-middle(FIM), cho phép chèn mã vào giữa đoạn mã hiện có
- Có thể hỗ trợ trực tiếp các tác vụ như hoàn thiện mã
- Kích thước mô hình phụ thuộc vào cách triển khai và yêu cầu về độ trễ
- Mô hình 7B có thể được phục vụ trên một GPU đơn
- Các mô hình 34B và 70B cho kết quả tốt nhất và hỗ trợ lập trình tốt hơn
- Các mô hình 7B và 13B nhanh hơn, nên phù hợp hơn với những tác vụ cần độ trễ thấp như hoàn thiện mã theo thời gian thực
- Các mô hình Code Llama cung cấp khả năng sinh ổn định với ngữ cảnh tối đa 100.000 token
- Tất cả mô hình được huấn luyện với chuỗi 16.000 token
- Cho thấy cải thiện với đầu vào tối đa 100.000 token
Ba biến thể: cơ bản, Python và Instruct
- Dòng Code Llama được chia thành ba biến thể
- Code Llama: mô hình mã nguồn cơ bản
- Code Llama - Python: mô hình chuyên cho Python
- Code Llama - Instruct: mô hình được tinh chỉnh để hiểu chỉ dẫn ngôn ngữ tự nhiên
- Code Llama - Python được tinh chỉnh bổ sung trên 100B token mã Python
- Python là ngôn ngữ được benchmark nhiều nhất trong tạo mã
- Python và PyTorch đóng vai trò quan trọng trong cộng đồng AI
- Code Llama - Instruct là biến thể tiếp tục được huấn luyện bằng đầu vào chỉ dẫn ngôn ngữ tự nhiên và đầu ra kỳ vọng
- Được thiết kế để hiểu tốt hơn những gì con người kỳ vọng trong prompt
- Được tinh chỉnh để tạo câu trả lời hữu ích và an toàn bằng ngôn ngữ tự nhiên
- Khi dùng Code Llama để tạo mã, nên sử dụng biến thể Code Llama - Instruct
- Code Llama và Code Llama - Python không được thiết kế để làm theo chỉ dẫn ngôn ngữ tự nhiên, nên không được khuyến nghị cho các tác vụ ngôn ngữ tự nhiên thông thường
- Code Llama dành cho các tác vụ chuyên biệt về mã nguồn, không phù hợp làm mô hình nền tảng cho các tác vụ khác
Công bố bổ sung Code Llama 70B
- Trong bản cập nhật ngày 29/1/2024, Code Llama 70B đã được công bố
- 70B là mô hình lớn nhất và có hiệu năng tốt nhất trong dòng Code Llama
- Được cung cấp với ba phiên bản giống Code Llama hiện có, tất cả đều miễn phí cho nghiên cứu và sử dụng thương mại
- CodeLlama - 70B: mô hình mã nguồn cơ bản
- CodeLlama - 70B - Python: mô hình 70B chuyên cho Python
- Code Llama - 70B - Instruct 70B: mô hình được tinh chỉnh để hiểu chỉ dẫn ngôn ngữ tự nhiên
Benchmark và đánh giá an toàn
- Đánh giá hiệu năng được thực hiện bằng hai benchmark lập trình
- Trong benchmark, Code Llama cho hiệu năng tốt hơn các LLM mã nguồn mở chuyên về code và Llama 2
- Code Llama 34B đạt 53,7% trên HumanEval và 56,2% trên MBPP
- Đây là mức cao hàng đầu so với các giải pháp mở tiên tiến đã công bố, và tương đương ChatGPT
- Meta đã thực hiện nhiều biện pháp an toàn trước khi công bố, và định lượng rủi ro tạo mã độc trong quá trình red-team
- Tạo các prompt yêu cầu mã độc với ý định rõ ràng
- Chấm điểm bằng cách so sánh phản hồi của Code Llama với phản hồi GPT-3.5 Turbo của ChatGPT
- Kết quả cho thấy Code Llama đưa ra phản hồi an toàn hơn
- Chi tiết red-team của các chuyên gia trong các lĩnh vực AI có trách nhiệm, kỹ thuật bảo mật tấn công, phát triển mã độc và kỹ thuật phần mềm được đưa vào bài nghiên cứu
Tài liệu công bố và sử dụng có trách nhiệm
- Recipe huấn luyện Code Llama được công bố trên kho GitHub
- Trọng số mô hình cũng được cung cấp
- Bài nghiên cứu bao gồm quá trình phát triển Code Llama, phương pháp kiểm thử benchmark, giới hạn, các vấn đề đã biết, biện pháp giảm thiểu và các vấn đề cần khảo sát trong tương lai
- Responsible Use Guide cũng được cập nhật
- Chính sách nội dung và định nghĩa biện pháp giảm thiểu
- Chuẩn bị dữ liệu
- Tinh chỉnh mô hình
- Đánh giá và cải thiện hiệu năng
- Ứng phó rủi ro ở cấp độ đầu vào và đầu ra
- Xây dựng tính minh bạch và cơ chế báo cáo trong tương tác với người dùng
- Nhà phát triển nên đánh giá mô hình bằng các benchmark đánh giá chuyên cho mã nguồn
- Khuyến nghị nghiên cứu an toàn đối với các trường hợp sử dụng chuyên cho mã nguồn như mã độc, virus máy tính và tạo mã có hại
- Cũng khuyến nghị sử dụng tập dữ liệu an toàn cho đánh giá tự động và đánh giá bởi con người, cũng như red-team dựa trên prompt đối kháng
Vai trò trong hệ sinh thái mô hình lập trình mở
- Code Llama được thiết kế để hỗ trợ kỹ sư phần mềm trong nhiều lĩnh vực như nghiên cứu, công nghiệp, dự án mã nguồn mở, NGO và doanh nghiệp
- Vẫn còn nhiều trường hợp sử dụng vượt ngoài phạm vi mà mô hình cơ bản và mô hình Instruct có thể xử lý
- Meta kỳ vọng Code Llama sẽ thúc đẩy những người khác tận dụng Llama 2 để tạo ra các công cụ mới cho nghiên cứu và sản phẩm thương mại
- Tài liệu liên quan:
1 bình luận
Ý kiến trên Hacker News