Reading

Software 2.0 của Karpathy: khi chương trình là trọng số mạng neural

Tóm tắt

Karpathy gọi mạng neural là Software 2.0: chương trình là trọng số được tối ưu từ dữ liệu, nên dữ liệu và eval chính là mã nguồn. Dùng nó cho việc mờ, khó viết luật, và giữ code tường minh cho phần cần chính xác tuyệt đối.

Tháng 11/2017, Andrej Karpathy, khi đó phụ trách AI ở Tesla, viết bài "Software 2.0". Luận điểm nghe táo bạo lúc ấy: mạng neural không chỉ là "một công cụ phân loại nữa", mà là một cách viết phần mềm mới, nơi phần lớn logic không do người viết ra. Gần một thập kỷ sau, với LLM và agent viết code, bài viết đọc như một lời tiên tri và vẫn là khung tư duy hữu ích.

Software 1.0 và 2.0

Software 1.0Software 2.0
Chương trình làLệnh tường minh (Python, C++)Trọng số của mạng neural
Ai "viết"Lập trình viên, từng dòngQuá trình tối ưu hoá, từ dữ liệu và mục tiêu
Việc của con ngườiViết và debug codeThu thập, gán nhãn, làm sạch dữ liệu; chọn kiến trúc và mục tiêu

Karpathy mô tả ở Tesla, phần code 2.0 (mạng neural) dần "ăn" vào phần code 1.0 viết tay của hệ thống lái tự động.

Ưu điểm được nêu trong bài

  • Đồng nhất về tính toán: chủ yếu là nhân ma trận, dễ tối ưu phần cứng.
  • Thời gian chạy và bộ nhớ cố định: không có vòng lặp bất ngờ.
  • Linh hoạt: muốn nhanh gấp đôi, có thể thu nhỏ mạng và huấn luyện lại, đổi một chút độ chính xác.
  • Các module "hoà" vào nhau: có thể tối ưu đồng thời cả hệ thống.
  • Tốt hơn người viết: ở nhiều lĩnh vực (ảnh, giọng nói), mạng học được giải pháp tốt hơn code viết tay.

Giới hạn, cũng được nêu rõ

  • Khó hiểu vì sao mạng đưa ra quyết định.
  • Hỏng theo cách khó lường, kể cả bị đánh lừa bởi input đối kháng.
  • Thừa hưởng thiên kiến từ dữ liệu.

Đọc lại trong thời LLM

  • "Dữ liệu là code": chất lượng sản phẩm AI phụ thuộc vào dữ liệu và bộ eval nhiều hơn vào code bao quanh. Đúng như bài dự đoán, công cụ quản lý dữ liệu, gán nhãn, eval trở thành hạ tầng quan trọng.
  • Bước tiếp theo: về sau Karpathy mở rộng ý tưởng thành "Software 3.0", nơi prompt bằng ngôn ngữ tự nhiên trở thành chương trình điều khiển LLM. Ba lớp cùng tồn tại: code, trọng số và prompt.
  • Giới hạn vẫn còn nguyên: khó giải thích, lỗi khó đoán, thiên kiến dữ liệu; đây chính là lý do cần eval, guardrail và người duyệt.

Lưu ý khi áp dụng

  • Không phải mọi thứ nên là 2.0: logic nghiệp vụ cần chính xác tuyệt đối (tính tiền, phân quyền) vẫn nên là code tường minh.
  • Debug khác hẳn: sửa lỗi Software 2.0 thường là sửa dữ liệu hoặc prompt, đo bằng eval, không phải đặt breakpoint.

Áp dụng thế nào?

  • Dev: Khi một hàm chỉ là chuỗi if-else ngày càng dài để xử lý ngôn ngữ tự nhiên, cân nhắc thay bằng LLM có eval; giữ code tường minh cho phần cần chính xác.
  • Tech Lead: Quản lý dữ liệu eval, prompt và cấu hình model như code: có version, review, CI.
  • PM: Lên kế hoạch nguồn lực cho dữ liệu và đánh giá, không chỉ cho "viết tính năng".

Nguồn & tham khảo

  1. Software 2.0 — Andrej Karpathy