Tính năng hoàn thành mã AI cục bộ của JetBrains gây tranh luận về kỹ năng lập trình và sự phụ thuộc vào công cụ

Nhóm Cộng đồng BigGo
Tính năng hoàn thành mã AI cục bộ của JetBrains gây tranh luận về kỹ năng lập trình và sự phụ thuộc vào công cụ

Tính năng Full Line Code Completion của JetBrains , sử dụng mô hình AI cục bộ để giúp các nhà phát triển viết mã logging, đã khơi mào một cuộc thảo luận sôi nổi về vai trò của trí tuệ nhân tạo trong lập trình và liệu những công cụ như vậy có nâng cao hay làm giảm kỹ năng của nhà phát triển.

Tính năng này chạy hoàn toàn trên máy cục bộ của nhà phát triển, sử dụng một mô hình nhỏ gọn 100MB có thể dự đoán và hoàn thành các câu lệnh logging dựa trên ngữ cảnh mã xung quanh. Khác với các trợ lý AI dựa trên cloud, cách tiếp cận này ưu tiên quyền riêng tư và tốc độ bằng cách giữ toàn bộ quá trình xử lý offline.

Thông số kỹ thuật mô hình AI của JetBrains:

  • Kích thước mô hình: 100MB (nén từ 400MB sử dụng lượng tử hóa INT8)
  • Tham số: 100 triệu (kiểu GPT-2, sau đó chuyển sang kiến trúc Llama2)
  • Cửa sổ ngữ cảnh: 384 ký tự
  • Dữ liệu huấn luyện: Tập con 45GB từ bộ dữ liệu The Stack
  • Từ vựng tokenizer: 16.384 token
  • Yêu cầu phần cứng: Chạy cục bộ trên CPU mà không cần phụ thuộc CUDA
Việc tích hợp AI trong viết log nâng cao năng suất của nhà phát triển, như được khám phá trong bài đăng blog
Việc tích hợp AI trong viết log nâng cao năng suất của nhà phát triển, như được khám phá trong bài đăng blog

Sự phân chia lớn trong triết lý lập trình

Phản ứng của cộng đồng cho thấy sự chia rẽ cơ bản trong cách các nhà phát triển nhìn nhận nghề của họ. Một số cho rằng việc dựa vào AI cho các tác vụ cơ bản như nhớ nên sử dụng logger.info hay logging.info thể hiện sự suy giảm đáng lo ngại trong các kiến thức lập trình cơ bản. Họ coi những chi tiết này là kiến thức cốt lõi mà các nhà phát triển có năng lực nên ghi nhớ.

Những người khác phản bác rằng việc quản lý tải nhận thức là rất quan trọng đối với năng suất, đặc biệt khi làm việc trên nhiều codebase với các thư viện logging khác nhau. Họ xem sự hỗ trợ của AI như một sự tiến hóa tự nhiên của các công cụ lập trình, tương tự như cách auto-completion và syntax highlighting đã trở thành các tính năng tiêu chuẩn.

Một điều đã trở nên hoàn toàn rõ ràng từ cơn sốt AI là có bao nhiều người làm lập trình để kiếm sống lại tích cực thù địch với những ứng dụng hấp dẫn mới của khoa học máy tính mở ra những khả năng và cách làm việc hoàn toàn mới.

Triển khai kỹ thuật và sự đánh đổi

JetBrains đã đạt được khả năng AI cục bộ này thông qua một số tối ưu hóa thông minh. Họ đã huấn luyện một mô hình 100 triệu tham số đặc biệt trên mã Python , loại bỏ các comment và import khỏi dữ liệu huấn luyện để tập trung hoàn toàn vào việc tạo mã. Mô hình sau đó được nén từ 400MB xuống 100MB bằng các kỹ thuật quantization.

Tuy nhiên, một số nhà phát triển đặt câu hỏi liệu điều này có thể hiện giải pháp tốt nhất hay không. Các language server truyền thống và intelligent code completion đã có thể xử lý các gợi ý tên biến và hoàn thành nhận biết ngữ cảnh với độ chính xác hoàn hảo và sử dụng tài nguyên tối thiểu. Các nhà phê bình cho rằng việc sử dụng suy luận dựa trên transformer cho các tác vụ mà các công cụ xác định có thể giải quyết hoàn hảo thể hiện việc lựa chọn công cụ không hiệu quả.

Tối ưu hóa Huấn luyện:

  • Loại bỏ các chú thích code để tập trung vào việc sinh mã
  • Chuyển đổi thụt lề thành các token <SCOPE_IN>/<SCOPE_OUT>
  • Loại trừ các câu lệnh import khỏi dữ liệu huấn luyện
  • Sử dụng tokenizer BPE được tối ưu hóa cho code thay vì ngôn ngữ tự nhiên
  • Huấn luyện trên 8 GPU NVIDIA A100 trong vài ngày

Tranh cãi về thực hành tốt nhất trong Logging

Cuộc thảo luận cũng làm nổi bật những cân nhắc kỹ thuật quan trọng về các thực hành logging trong Python . Một số nhà phát triển có kinh nghiệm chỉ ra rằng việc sử dụng f-string trong các câu lệnh logging, mặc dù tiện lợi, có thể gây ra các vấn đề về hiệu suất và can thiệp vào các hệ thống tổng hợp log như Sentry . Cách tiếp cận truyền thống sử dụng format string với toán tử % cho phép các hệ thống logging nhóm các thông báo tương tự lại với nhau và tránh việc nội suy chuỗi không cần thiết khi các mức logging bị vô hiệu hóa.

Thực hành tốt nhất cho Python Logging:

  • Được khuyến nghị: logger.info("Message %s", variable)
  • Nên tránh: logger.info(f"Message {variable}")
  • Lý do: F-strings ngăn cản việc tổng hợp log, gây ra các vấn đề về hiệu suất trong các đoạn code quan trọng, và có thể ném ra ngoại lệ nếu các biến chứa các ký tự định dạng
Các thực hành tốt nhất trong Python logging, bao gồm việc sử dụng tối ưu f-strings, được làm nổi bật trong đoạn code này
Các thực hành tốt nhất trong Python logging, bao gồm việc sử dụng tối ưu f-strings, được làm nổi bật trong đoạn code này

Mô hình AI cục bộ so với Cloud

Bản chất cục bộ của triển khai JetBrains đã nhận được sự khen ngợi rộng rãi từ các nhà phát triển quan tâm đến quyền riêng tư. Việc chạy suy luận cục bộ loại bỏ các lo ngại về việc gửi mã độc quyền đến các dịch vụ bên ngoài đồng thời cung cấp hiệu suất nhất quán bất kể kết nối internet.

Cách tiếp cận này thể hiện xu hướng rộng hơn hướng tới các mô hình AI chuyên biệt, dành riêng cho lĩnh vực cụ thể thay vì các dịch vụ cloud đa năng. Bằng cách chỉ tập trung vào hoàn thành mã Python trong cửa sổ ngữ cảnh 384 ký tự, JetBrains đã tạo ra một công cụ vừa hiệu quả vừa có hiệu lực cho trường hợp sử dụng cụ thể của nó.

Kết luận

Cuộc tranh luận xung quanh tính năng hoàn thành mã được hỗ trợ bởi AI của JetBrains phản ánh những câu hỏi lớn hơn về tương lai của phát triển phần mềm. Trong khi một số nhà phát triển đón nhận AI như một công cụ nhân năng suất giải phóng họ để tập trung vào các vấn đề cấp cao hơn, những người khác lo lắng về việc tạo ra các sự phụ thuộc có thể làm suy yếu các kỹ năng lập trình cơ bản.

Sự thành công của các mô hình AI cục bộ, chuyên biệt như triển khai của JetBrains gợi ý rằng tương lai có thể bao gồm cả hai cách tiếp cận: các mô hình đa năng mạnh mẽ cho các tác vụ phức tạp và các công cụ nhẹ, tập trung cho các quy trình làm việc cụ thể. Khi công nghệ trưởng thành, các nhà phát triển có thể sẽ cần tìm ra sự cân bằng riêng giữa việc tận dụng sự hỗ trợ của AI và duy trì các năng lực cốt lõi.

Tham khảo: My favorite use-case for AI is writing logs