Giả sử tôi muốn trả lời một câu hỏi: công cụ X có hữu ích cho nhiệm vụ Y hay không.
Nếu tiếp cận một cách khoa học, tôi sẽ:
-
phân tích đặc tính của công cụ X và xây dựng một mô hình
-
phân tích nhiệm vụ Y và các yêu cầu của nó và xây dựng một mô hình
-
sau đó dùng hai mô hình này để dự đoán hành vi của X khi áp dụng cho Y
Ví dụ:
-
“Có thể dùng gỗ thay thép không gỉ làm dầm chịu lực cho cấu trúc này không?”
-
“Axit này có phải dung môi phù hợp cho phản ứng này không?”
-
“Ngôn ngữ lập trình này có đảm bảo được các ràng buộc real-time này không?”
Những câu hỏi như vậy được trả lời bằng mô hình và phân tích.
Nhưng cách chúng ta thảo luận về generative model lại không giống vậy.
Thay vào đó, bạn thường nghe những tuyên bố kiểu:
-
“software engineering đã chết”
-
cố gắng nhét generative model vào mọi thứ có thể tưởng tượng
Ví dụ:
-
Search? → generative model
-
Code completion? → generative model
-
Summarization? → generative model
-
Voice to text? → generative model
-
Stock images? → generative model
Tranh luận toàn “vibes”
Mỗi khi có ai đó cố gắng chỉ ra vấn đề, cuộc tranh luận thường rơi vào:
-
nói vòng vo
-
hoặc nói chuyện mà không cùng hệ quy chiếu
Ví dụ:
“Generative model có hữu ích cho internet search không?”
Người ta sẽ trả lời:
“Nó tạo ra văn bản có vẻ liên quan đến prompt.”
Nhưng… thì sao?
Điều đó không trả lời câu hỏi.
Người ta cũng thường nói:
“Model mới tốt hơn rất nhiều.”
Nhưng tốt hơn ở điều gì?
Từ “prompt engineering” đến “agent hype”
Tôi đã khó chịu từ khi mọi người gọi thứ này là “prompt engineering”.
Tôi không thấy engineering ở đâu cả.
Chỉ thấy:
-
những “mẹo” để viết prompt
-
những vibes về cách diễn đạt
-
hy vọng model tạo ra output “có vẻ liên quan” đến prompt
Giờ đây điều tương tự đang xảy ra với AI agents.
Người ta nói:
-
agent rất hữu ích
-
giúp họ “cảm thấy năng suất hơn”
Nhưng khi hỏi:
-
khi nào hữu ích?
-
vì sao hữu ích?
-
hữu ích như thế nào?
thì câu trả lời vẫn chỉ là vibes.
Điều trớ trêu là nghiên cứu khoa học thực tế cho thấy:
-
cảm giác năng suất và
-
năng suất thực tế đo được
thường không khớp nhau.
Tôi muốn một mô hình để trả lời câu hỏi này
Tôi muốn biết khi nào generative model thực sự hữu ích.
Không phải cảm giác hữu ích.
Tôi vốn là một người hoài nghi generative model từ đầu.
Nhưng tôi cũng hoài nghi trải nghiệm chủ quan của chính mình.
Tôi có thể tưởng tượng một model có khả năng:
-
tạo code từ ngôn ngữ tự nhiên
sẽ hữu ích trong một số trường hợp nào đó mà tôi chưa gặp.
Vì vậy tôi tin rằng phải tồn tại một mô hình để xác định khi nào model X hữu ích cho nhiệm vụ Y.
Lưu ý: bài viết này không bàn về đạo đức
Trong bài viết này, tôi không bàn về các vấn đề đạo đức, chính trị hay xã hội.
Những vấn đề đó rất quan trọng.
Nhưng tôi muốn tách chúng khỏi câu hỏi:
công nghệ này thực sự làm được gì?
Để nói rõ quan điểm cá nhân:
-
Tôi nghĩ việc triển khai công nghệ này ở quy mô lớn rất đáng lo ngại
-
Việc đầu tư ở quy mô hiện tại có thể gây tổn hại kinh tế
-
Các vấn đề đạo đức ở đây rất nghiêm trọng
Nhưng bây giờ tôi chỉ muốn trả lời:
về mặt kỹ thuật, generative model có thể làm gì?
Một mô hình để đánh giá tính hữu ích của generative model
Theo tôi, tính hữu ích của generative model phụ thuộc vào ba yếu tố.
1️⃣ Chi phí mã hóa nhiệm vụ vào prompt so với việc làm trực tiếp.
2️⃣ Chi phí xác minh output so với output do con người tạo ra.
3️⃣ Mức độ phụ thuộc vào artifact hay vào process của nhiệm vụ.
Ba yếu tố này cần được xem xét cùng lúc.
Nếu không, tranh luận sẽ luôn chỉ dựa trên cảm giác.
Dự đoán từ mô hình này
Theo mô hình này:
📉 Generative model có thể kém hữu ích hơn khi độ phức tạp của nhiệm vụ tăng lên.
Lý do:
-
generative model là probabilistic
-
output ít có khả năng thỏa mãn yêu cầu phức tạp
Đặc biệt khi:
-
yêu cầu khác với pattern phổ biến trong dữ liệu training
-
hoặc chỉ hơi khác các pattern phổ biến
Việc xác minh output phức tạp cũng rất khó.
Khi generative model có thể hữu ích
Generative model hữu ích khi:
-
tạo artifact khó
-
nhưng xác minh artifact rất dễ
Ví dụ:
-
task cần cross-reference rất nhiều thông tin cụ thể
-
sau khi tạo xong thì kiểm tra rất đơn giản
Một trường hợp khác là khi model kết hợp với:
formal verification system
Nhưng người dùng vẫn cần expertise
Nếu một người không có chuyên môn cố tạo một artifact phức tạp bằng generative model:
→ họ không đủ khả năng xác minh output
Vì vậy:
Người dùng generative model vẫn cần kiến thức chuyên môn trong lĩnh vực đó.
Generative model vô dụng với các task phụ thuộc vào process
Một số task phụ thuộc vào quy trình chứ không chỉ output.
Ví dụ:
Trong giáo dục
Sinh viên viết code factorial không phải vì ta cần factorial.
Mà vì:
quá trình viết code tạo ra kiến thức trong đầu họ.
Viết code và đọc code là hai quá trình hoàn toàn khác nhau.
Ví dụ: viết bài blog này
Tôi đang tự viết bài blog này.
Tôi không gõ prompt để model viết thay.
Vì mục tiêu của tôi không phải chỉ là tạo bài viết.
Mà là:
-
tạo hiểu biết trong chính tôi
-
sau đó truyền đạt cho người khác
Process cũng quan trọng trong engineering
Một số quy trình engineering tồn tại vì:
-
nếu quy trình được tuân thủ
-
output sẽ có các tính chất khó kiểm tra trực tiếp
Ví dụ:
Một công ty công nghệ lớn có thể cấm engineer đóng góp vào open source để tránh rủi ro bản quyền.
Bạn không thể chỉ nhìn vào code để xác minh điều đó.
Nhưng có task chỉ cần output
Dĩ nhiên, có task mà tôi chỉ quan tâm đến output.
Ví dụ:
Tôi từng quên tên một package.
Tôi prompt:
“install that x11 fake gui thing”
Agent đã:
-
tìm package
-
tìm command
-
chạy install
Prompt rất đơn giản.
Nếu tự làm, tôi phải:
-
tìm package
-
tìm lệnh đúng
-
viết script
Task này có encoding cost rất thấp.
Khi generative model thực sự hữu ích
Generative model hữu ích khi:
1️⃣ Chi phí encoding vào prompt thấp
2️⃣ Chi phí xác minh output thấp
3️⃣ Process không quan trọng
Nhưng để đánh giá ba điều này chính xác, người dùng cần:
-
hiểu task
-
hiểu domain
-
hiểu generative model
Nếu không, bạn chỉ đang làm việc dựa trên vibes
Điều hướng các trade-off này chính là engineering.
Nếu bạn làm điều đó để tạo software:
→ bạn đang làm software engineering.
Nếu không:
→ bạn chỉ đang dựa vào vibes.
Kết quả có thể là:
-
vô tình hữu ích
-
hoặc rất nguy hiểm.
Output “plausible” không có nghĩa là “useful”
Generative model khiến việc tạo ra lượng lớn output trông hợp lý trở nên rất rẻ.
Nhưng:
plausible ≠ useful
Không có gì trong generative model đảm bảo output sẽ thực sự hữu ích.
Khi model phức tạp hơn:
-
prompt phức tạp hơn
-
output phức tạp hơn
Nhưng chi phí cũng tăng:
-
compute
-
verification
-
rủi ro bỏ qua process
Cám dỗ của generative model
Tôi hiểu vì sao các công cụ này hấp dẫn.
Rất nhiều công việc:
-
phức tạp
-
khó chịu
-
tẻ nhạt
Viết code, chạy script, sắp xếp ghi chú…
Một số là accidental complexity, nhưng nhiều khi là essential complexity.
Rất dễ dùng generative model để tạo output.
Nhưng:
không hề dễ dùng chúng để tạo ra output thực sự hữu ích.