Thẻ mô hình CodeGemma

Trang mô hình: CodeGemma

Tài liệu và tài liệu kỹ thuật:

Điều khoản sử dụng: Điều khoản

Tác giả: Google

Thông tin mẫu

Tóm tắt mô hình

Nội dung mô tả

CodeGemma là một dòng mô hình mã mở gọn nhẹ được xây dựng dựa trên Gemma. Các mô hình CodeGemma là các mô hình chỉ giải mã văn bản thành văn bản và văn bản thành mã, được cung cấp dưới dạng 7 tỷ biến thể được huấn luyện trước chuyên hoàn thành mã và các tác vụ tạo mã, một biến thể được tinh chỉnh theo hướng dẫn 7 tỷ tham số để thực hiện cuộc trò chuyện và hướng dẫn bằng mã theo sau và một biến thể được huấn luyện trước gồm 2 tỷ tham số để hoàn tất mã nhanh chóng.

Đầu vào và đầu ra

  • Đầu vào: Đối với các biến thể của mô hình luyện sẵn: tiền tố và hậu tố (không bắt buộc) cho các tình huống tạo và hoàn thành mã hoặc văn bản/lời nhắc bằng ngôn ngữ tự nhiên. Đối với biến thể mô hình được điều chỉnh theo hướng dẫn: văn bản hoặc câu lệnh bằng ngôn ngữ tự nhiên.

  • Kết quả: Đối với các biến thể mô hình luyện sẵn: mã hoàn thành, mã và ngôn ngữ tự nhiên. Đối với biến thể mô hình được điều chỉnh theo hướng dẫn: mã và ngôn ngữ tự nhiên.

Trích dẫn

@article{codegemma_2024,
    title={CodeGemma: Open Code Models Based on Gemma},
    url={https://goo.gle/codegemma},
    author={ {CodeGemma Team} and Hartman, Ale Jakse and Hu, Andrea and Choquette-Choo, Christopher A. and Zhao, Heri and Fine, Jane and Hui,
    Jeffrey and Shen, Jingyue and Kelley, Joe and Howland, Joshua and Bansal, Kshitij and Vilnis, Luke and Wirth, Mateo and Nguyen, Nam, and Michel, Paul and Choy, Peter and Joshi, Pratik and Kumar, Ravin and Hashmi, Sarmad and Agrawal, Shubham and Zuo, Siqi and Warkentin, Tris and Gong, Zhitao et al.},
    year={2024}
}

Dữ liệu về mô hình

Tập dữ liệu huấn luyện

Bằng cách sử dụng Gemma làm mô hình cơ sở, các biến thể đã huấn luyện sẵn của CodeGemma 2B và 7B được huấn luyện thêm dựa trên 500 đến 1000 tỷ mã thông báo chứa dữ liệu chủ yếu bằng tiếng Anh từ các tập dữ liệu toán học nguồn mở và mã được tạo tổng hợp.

Xử lý dữ liệu huấn luyện

Chúng tôi áp dụng các kỹ thuật tiền xử lý dữ liệu sau đây để huấn luyện CodeGemma:

  • FIM – Các mô hình CodeGemma được huấn luyện trước tập trung vào các tác vụ điền vào giữa (FIM). Các mô hình này được huấn luyện để làm việc với cả chế độ PSM và SPM. Chế độ cài đặt FIM của chúng tôi là tỷ lệ FIM từ 80% đến 90% với 50 – 50 PSM/SPM.
  • Kỹ thuật Đóng gói từ vựng dựa trên biểu đồ phần phụ thuộc và Đóng gói từ vựng dựa trên kiểm thử đơn vị: Để cải thiện khả năng phù hợp với mô hình với các ứng dụng thực tế, chúng tôi đã cấu trúc các ví dụ huấn luyện ở cấp dự án/kho lưu trữ để sắp xếp các tệp nguồn có liên quan nhất trong mỗi kho lưu trữ. Cụ thể, chúng tôi đã sử dụng 2 kỹ thuật phỏng đoán: đóng gói dựa trên biểu đồ phần phụ thuộc và đóng gói từ vựng dựa trên kiểm thử đơn vị.
  • Chúng tôi đã phát triển một kỹ thuật mới để chia các tài liệu thành tiền tố, giữa và hậu tố để làm cho hậu tố bắt đầu theo một điểm có cú pháp tự nhiên hơn thay vì phân phối hoàn toàn ngẫu nhiên.
  • An toàn: Tương tự như Gemma, chúng tôi đã triển khai cơ chế lọc an toàn nghiêm ngặt bao gồm lọc dữ liệu cá nhân, lọc nội dung xâm hại tình dục trẻ em và các cơ chế lọc khác dựa trên chất lượng nội dung và sự an toàn theo chính sách của chúng tôi.

Thông tin triển khai

Phần cứng và khung được sử dụng trong quá trình đào tạo

Giống như Gemma, CodeGemma được đào tạo về phần cứng Bộ xử lý gia tăng (TPU) (TPUv5e) thế hệ mới nhất (TPUv5e), bằng cách sử dụng JAXLộ trình học máy.

Thông tin đánh giá

Kết quả đo điểm chuẩn

Phương pháp đánh giá

Kết quả đo điểm chuẩn lập trình

Benchmark (Điểm chuẩn) 2 TỶ 2 T (1.1) 7 TỶ 7B-Ý 7B-IT (1.1)
HumanEval 31,1 37,8 44,5 56,1 60,4
MBPP 43,6 49,2 56,2 54,2 55,6
Dòng đơn HumanEval 78,4 79,3 76,1 68,3 77,4
Nhiều dòng HumanEval 51,4 51 58,4 20,1 23,7
BC HE C++ 24,2 euro 32,9 42,2 46,6
BC HE C# 10.6 26,1 22,4 26,7 54,7
BC HE Go 20,5 18.0 21,7 28,6 34,2
BC HE Java 29,2 29,8 41 48,4 50,3
JavaScript BC HE 21,7 28 39,8 46 48,4
Kotlin BC HE Kotlin 28 32,3 39,8 51,6 47,8
Python BC HE 21,7 36,6 42,2 48,4 54
BC HE Gỉ sét 26,7 24,2 34,1 36 37,3
MBPP C++ của BC 47,1 euro 53,8 56,7 63,5
MBPP C# của BC 28,7 45,3 32,5 41,2 62
BC MBPP Go 45,6 euro 43,3 46,2 53,2
Java MBPP của BC 41,8 49,7 50,3 57,3 euro
JavaScript MBPP BC 45,3 45 58.2 61,4 61,4
Kotlin cho MBPP của BC 46,8 49,7 54,7 euro 62,6
Python MBPP BC 38,6 52,9 59,1 62 60.2
Rust BC MBPP 45,3 47,4 52,9 53,5 52,3

Điểm chuẩn ngôn ngữ tự nhiên (trên mô hình 7B)

Biểu đồ thanh so sánh các chỉ số về khả năng sử dụng ngôn ngữ với Gemma, CodeGemma PT và CodeGemma IT. Cả ba mô hình này gần như tương đương với nhau, trong đó CodeGemma vẫn duy trì khả năng hiểu ngôn ngữ tự nhiên mạnh mẽ.

Đạo đức và an toàn

Đánh giá về đạo đức và sự an toàn

Phương pháp đánh giá

Các phương pháp đánh giá của chúng tôi bao gồm đánh giá có cấu trúc và kiểm thử kết hợp nội bộ đối với các chính sách nội dung có liên quan. Nhiều nhóm khác nhau đã tiến hành quy trình hợp tác đỏ, mỗi nhóm có những mục tiêu và chỉ số đánh giá thủ công khác nhau. Những mô hình này được đánh giá theo nhiều danh mục liên quan đến đạo đức và sự an toàn, bao gồm:

  • Quy trình đánh giá thủ công đối với câu lệnh có liên quan đến tính an toàn của nội dung và các hành vi gây hại về mặt thể hiện. Hãy xem thẻ mô hình Gemma để biết thêm thông tin chi tiết về phương pháp đánh giá.

  • Hoạt động thử nghiệm cụ thể về khả năng tấn công mạng, tập trung vào việc thử nghiệm khả năng xâm nhập độc lập và đảm bảo hạn chế các mối nguy hại tiềm ẩn.

Kết quả đánh giá

Kết quả đánh giá về đạo đức và mức độ an toàn đều nằm trong ngưỡng chấp nhận được để đáp ứng chính sách nội bộ đối với các danh mục như sự an toàn cho trẻ em, sự an toàn cho nội dung, tác hại thể hiện, hoạt động ghi nhớ, tác hại trên quy mô lớn. Hãy xem thẻ mô hình Gemma để biết thêm thông tin chi tiết.

Việc sử dụng và giới hạn của mô hình

Các hạn chế đã biết

Các mô hình ngôn ngữ lớn (LLM) có các hạn chế dựa trên dữ liệu huấn luyện và những hạn chế vốn có của công nghệ. Hãy xem thẻ mô hình Gemma để biết thêm thông tin chi tiết về các điểm hạn chế của các LLM.

Cân nhắc và rủi ro về mặt đạo đức

Sự phát triển các mô hình ngôn ngữ lớn (LLM) làm nảy sinh một số lo ngại về đạo đức. Chúng tôi đã xem xét kỹ lưỡng nhiều khía cạnh trong quá trình phát triển các mô hình này.

Vui lòng tham khảo cùng một cuộc thảo luận trong thẻ mô hình Gemma để biết thông tin chi tiết về mô hình.

Mục đích sử dụng

Ứng dụng

Các mô hình Gemma mã có nhiều loại ứng dụng, khác nhau giữa các mô hình CNTT và PT. Danh sách các trường hợp có thể sử dụng sau đây chưa đầy đủ. Mục đích của danh sách này là cung cấp thông tin theo bối cảnh về những trường hợp sử dụng có thể xảy ra mà người tạo mô hình đã xem xét trong quá trình huấn luyện và phát triển mô hình.

  • Hoàn tất mã: Có thể dùng các mô hình PT để hoàn tất mã bằng một tiện ích IDE
  • Tạo mã: Mô hình CNTT có thể được dùng để tạo mã có hoặc không có tiện ích IDE
  • Cuộc trò chuyện mã: Mô hình CNTT có thể hỗ trợ các giao diện trò chuyện có thảo luận về mã
  • Giáo dục mã: mô hình CNTT hỗ trợ trải nghiệm học lập trình có tính tương tác, hỗ trợ sửa cú pháp hoặc thực hành lập trình

Lợi ích

Tại thời điểm phát hành, nhóm mô hình này cung cấp cách triển khai mô hình ngôn ngữ lớn tập trung vào mã mở và có hiệu suất cao, được thiết kế từ nền tảng đầu cho việc phát triển AI có trách nhiệm so với các mô hình có kích thước tương tự.

Nhờ sử dụng các chỉ số đánh giá điểm chuẩn lập trình được mô tả trong tài liệu này, các mô hình này cho thấy hiệu suất vượt trội so với các mô hình mở khác có quy mô tương đương.