Tin Tức

GitHub Copilot: Công cụ tự động viết code bằng trí tuệ nhân tạo

You are interested in GitHub Copilot: Công cụ tự động viết code bằng trí tuệ nhân tạo right? So let's go together natuts.com look forward to seeing this article right here!

Ngày nay, GitHub và OpenAI đã ra mắt một công cụ đáng chú ý dựa trên trí tuệ nhân tạo dành cho các nhà phát triển – GitHub Copilot. Công cụ này được quảng cáo như một trợ lý lập trình cặp (pair programming) thông minh, vượt trội hơn các công cụ tự động điền code thông thường. Tuy nhiên, Copilot không nhằm thay thế các nhà phát triển, mà được tận dụng như một công cụ hỗ trợ giúp giảm thiểu công việc “nhàm chán” và “lặp đi lặp lại” trong quá trình lập trình. Điều này giúp các lập trình viên tập trung vào những quy trình đòi hỏi tư duy và suy luận nhiều hơn.

GitHub Copilot được phát triển dựa trên một mô hình deep learning mới được OpenAI giới thiệu qua bài báo có tiêu đề “Evaluating Large Language Models Trained on Code”. Bài báo này giới thiệu mô hình Codex, một mô hình ngôn ngữ tương tự GPT được điều chỉnh dựa trên mã nguồn công khai trên GitHub.

GitHub Copilot: Công cụ tự động viết code bằng trí tuệ nhân tạo

Công cụ viết code như Copilot có tiềm năng giúp hàng triệu nhà phát triển trên toàn cầu tăng tốc quá trình phát triển bằng cách cung cấp các khung code sẵn có sẵn. Nó cũng giúp nhà phát triển làm việc với các ngôn ngữ lập trình mới và cải thiện độ tin cậy của code bằng cách đề xuất các bài kiểm tra phù hợp với việc triển khai code và nhiều tính năng khác.

Tuy nhiên, vì Copilot dựa trên các mô hình ngôn ngữ lớn (LLM – large language models) được huấn luyện trên một lượng dữ liệu khổng lồ, nó không hoàn toàn giống với các công cụ tương tự đã tồn tại trước đó. Trong bài viết này, chúng ta sẽ tìm hiểu một số đặc điểm chính của GitHub Copilot. Đầu tiên, chúng ta sẽ khám phá về Codex, mô hình deep learning hỗ trợ Copilot, và xem xét khả năng của Copilot và quá trình huấn luyện. Sau đó, chúng ta sẽ thảo luận về một số mối quan tâm liên quan đến bản quyền.

Nếu bạn đã từng sử dụng các công cụ tự động hoàn thành code như Tabnine, bạn có thể tưởng tượng được sức mạnh của Copilot. Tuy nhiên, như chúng ta sẽ thấy, Copilot vượt xa nhiều hơn thông qua phân tích và chứng minh rằng nó có thể làm.

Mô hình ngôn ngữ lớn (LLM) và Codex

Sự thành công gần đây của các mô hình ngôn ngữ lớn (LLM) như GPT và BERT dựa trên ba yếu tố chính:

  • Tiến bộ trong kiến ​​trúc mạng thần kinh như Transformer.
  • Sự khả dụng của cơ sở dữ liệu văn bản lớn như Wikipedia.
  • Tiến bộ trong tính toán hiệu suất cao sử dụng phần cứng chuyên dụng như GPU.

Những yếu tố này đã tạo điều kiện cho mạng deep neural tạo ra một cuộc cách mạng trong ứng dụng xử lý ngôn ngữ tự nhiên (NLP) trong thập kỷ qua. Đặc biệt, sự có sẵn của các kho mã nguồn lớn như GitHub và GitLab cũng đã cho phép các phương pháp áp dụng các tiến bộ NLP trong những ứng dụng phức tạp nhất – tổng hợp code.

Codex là một mô hình GPT chuyên biệt được huấn luyện trên mã công khai và thiết kế để tạo ra mã máy tính từ một ngữ cảnh nhất định. Ví dụ, nó có thể tạo ra một hàm Python từ một mô tả viết bằng ngôn ngữ tự nhiên được gọi là docstring.

Để hiểu cách Codex hoạt động, chúng ta cần tìm hiểu về Generative Pre-training Transformer (GPT), một nhóm mô hình ngôn ngữ được OpenAI phát triển.

Ban đầu, mô hình ngôn ngữ chỉ đơn giản là một thuật toán machine learning học cách tạo văn bản bằng cách tối ưu hóa một tác vụ đơn giản gọi là dự đoán từ tiếp theo. Ý tưởng chính là tìm hiểu xác suất dự đoán của một token từ ngữ cảnh xung quanh nó. Ví dụ, dự đoán ký tự tiếp theo trong một từ với các từ trước đó, hoặc dự đoán từ tiếp theo của một câu với ngữ cảnh.

GPT là một nỗ lực để nghiên cứu cách các mô hình ngôn ngữ xác suất hoạt động trong các môi trường quy mô lớn. GPT-3, phiên bản mới nhất của GPT, được đào tạo bằng cách sử dụng 5 bộ dữ liệu NLP lớn nhất hiện có trên internet: Common Crawl, WebText2, Books1, Books2 và Wikipedia. GPT-3 cũng là mô hình machine learning có số tham số lớn nhất cho đến nay, với phiên bản lớn nhất chứa tới 175 tỷ tham số.

GPT-3 học các mối tương quan từ các văn bản của con người thông qua việc dự đoán từ tiếp theo, từ một số từ đã cho. Mô hình cũng có tính năng gợi ý từ giống như trong các ứng dụng bàn phím trên điện thoại di động khi chúng ta nhắn tin.

Quan trọng nhất, các mối tương quan này tạo ra một biểu diễn văn bản nội bộ chặt chẽ cho phép GPT học các tác vụ khác nhau mà không cần phải đào tạo lại hệ thống. Các tác vụ này bao gồm trả lời câu hỏi, dịch thuật, lập luận với cách tiếp cận chung, đọc hiểu, và nhiều thứ khác. Ví dụ, trong trường hợp trả lời câu hỏi, mô hình GPT được đánh giá dựa trên khả năng trả lời các câu hỏi về kiến ​​thức thực tế.

Để thử hiệu năng của Codex, OpenAI đã phát triển một giao thức đánh giá gọi là HumanEval: Hand-Written Evaluation Set cho nhiệm vụ tạo hàm Python từ docstrings. Các hàm này được đánh giá đúng/sai bằng cách sử dụng các số liệu pass@k. Tại đây, hệ thống được phép tạo ra k giải pháp cho một vấn đề cụ thể. Nếu bất kỳ giải pháp nào vượt qua bài kiểm tra, vấn đề được xem là đã giải quyết.

Cơ sở dữ liệu đánh giá chứa 164 bài toán lập trình viết tay với các bài kiểm tra đơn vị tương ứng. Mỗi hàm bao gồm một chữ ký, một chuỗi tài liệu, nội dung và trung bình có 7,7 bài kiểm tra đơn vị.

Nhiệm vụ đánh giá HumanEval tập trung vào việc hiểu ngôn ngữ, thuật toán và toán học cơ bản, bao gồm cả các câu hỏi phỏng vấn phần mềm đơn giản. Đối với một vấn đề cụ thể, nếu Codex được phép tạo ra một giải pháp duy nhất (pass@1), nó có thể tạo ra các hàm chính xác cho 28,8% trong số 164 vấn đề. Tuy nhiên, nếu Codex được phép tạo ra 100 giải pháp (vượt qua@100), tỷ lệ hàm chính xác tăng lên 77,5%.

Codex nhận dữ liệu đào tạo được thu thập từ 54 triệu kho mã nguồn mở trên GitHub vào tháng 5 năm 2020. Từ đó, họ đã trích xuất 179 GB tệp Python duy nhất dưới 1 MB từ kho mã này. Dữ liệu đã được lọc để loại bỏ code tự động và giới hạn độ dài dòng trung bình, kết quả là tập dữ liệu cuối cùng có kích thước 159 GB.

Rõ ràng, mặc dù GitHub Copilot mang lại nhiều lợi ích cho cộng đồng phát triển, nhưng nó không thể thay thế các nhà phát triển theo bất kỳ tình huống nào. Ngoài ra, việc tin tưởng quá nhiều vào code do Copilot tạo ra cũng có thể gây ra những vấn đề không mong muốn. Áp dụng hiện tại của Copilot không thể tạo ra giải pháp chính xác cho các vấn đề phức tạp hơn, vì vậy việc tin tưởng quá nhiều vào code do Copilot tạo ra có thể không lý tưởng trong mọi tình huống.

Về khía cạnh bảo mật, việc ra mắt GitHub Copilot đã gây ra nhiều cuộc tranh luận quan trọng. Một trong những vấn đề quan trọng liên quan đến giấy phép. GitHub cho biết Copilot được đào tạo trên các kho mã nguồn công khai trên GitHub. Điều này gây ra một số mối quan tâm: làm thế nào GitHub có thể sử dụng toàn bộ mã nguồn công khai có sẵn trên nền tảng của họ và xây dựng một hệ thống sẽ được sử dụng cho mục đích thương mại?

Hơn nữa, có bao nhiêu kho lưu trữ sử dụng giấy phép dựa trên GPL? Điều này có thể là một vấn đề vì giấy phép GPL được coi là virus, yêu cầu mọi sửa đổi hoặc phần mềm có sử dụng mã cấp phép GPL phải tuân theo giấy phép tương tự. Điều này có thể gây ra một số vấn đề pháp lý.

Thêm vào đó, Copilot đã bị báo cáo xuất thông tin cá nhân như khóa API. Điều này đã làm nảy sinh cuộc tranh luận về việc các mô hình ngôn ngữ lớn này ghi nhớ dữ liệu huấn luyện thay vì tạo ra nội dung mới như thế nào. Theo GitHub, chỉ 0,1% các sản phẩm Copilot tạo ra được coi là bản sao chép từ dữ liệu huấn luyện.

Việc huấn luyện mạng nơ-ron sâu tổng hợp code trên hàng triệu code công khai đã cho thấy Copilot có thể tạo ra code chất lượng cao. Tuy nhiên, nếu hầu hết các kho mã nguồn dùng để đào tạo Codex không tuân thủ các nguyên tắc bảo mật và chất lượng code, Copilot có thể tạo ra code kém chất lượng.

Kết luận

GitHub Copilot không thể phủ nhận là một ứng dụng đột phá của mạng deep neural. Mặc dù nó không hoàn hảo, nhưng có tiềm năng để được cải thiện theo thời gian. Tuy nhiên, lợi ích mà Copilot mang lại, ngay cả trong giai đoạn BETA, là không thể phủ nhận. Tuy nhiên, Copilot phụ thuộc quá nhiều vào đầu ra của nó và có thể mang lại một số kết quả không mong muốn. Một cách nào đó, Copilot nhằm thay đổi cách tiếp cận lập trình. Với sự tiến bộ của các công cụ như vậy, các lập trình viên sẽ có thể dành nhiều thời gian hơn cho các vấn đề đòi hỏi sự suy luận của con người, trong khi quá trình phát triển sẽ tự động hóa và đơn giản hơn.

Ngoài ra, bạn cũng có thể tạo một trang web đơn giản chỉ trong 15 phút sử dụng GitHub tại đây.

Conclusion: So above is the GitHub Copilot: Công cụ tự động viết code bằng trí tuệ nhân tạo article. Hopefully with this article you can help you in life, always follow and read our good articles on the website: natuts.com

Related Articles

Back to top button