1 điểm bởi GN⁺ 2024-02-25 | 1 bình luận | Chia sẻ qua WhatsApp

Cách tối ưu hóa truy vấn cơ sở dữ liệu

  • Giải thích về cách làm cho truy vấn cơ sở dữ liệu chạy nhanh hơn.

Triển khai mô hình GPT bằng SQL

  • Lý thuyết và quá trình triển khai thực tế về cách hiện thực mô hình GPT bằng SQL.
  • Mô hình GPT là một hàm nhận vào chuỗi văn bản và trả về một mảng gồm chuỗi và số.
  • Hàm này có tính quyết định, luôn trả về cùng một đầu ra cho cùng một đầu vào.

Lý thuyết

  • Giải thích ngắn gọn về nguyên lý hoạt động bên trong của mô hình GPT.
  • Giải thích, từ góc nhìn kỹ thuật, mô hình ngôn ngữ lớn sinh là gì.
  • Giá trị trả về của hàm là một mảng các tuple biểu thị từ sẽ tiếp nối prompt đầu vào và xác suất của chúng.

Ý nghĩa của giá trị

  • Giá trị mà hàm trả về là một mảng các tuple gồm một từ và một con số biểu thị xác suất từ đó sẽ tiếp nối prompt.

Các phương pháp sinh văn bản khác nhau

  • Mô hình ngôn ngữ lớn được dùng trong các ứng dụng văn bản, hoạt động bằng cách chọn từ do mô hình đề xuất rồi thêm vào prompt.
  • Quá trình này tạo ra văn bản chứa ngữ pháp, cú pháp, trí tuệ và suy luận của ngôn ngữ con người.

Ý nghĩa của Generative Pre-trained Transformer

  • "Generative" có nghĩa là tạo sinh văn bản, còn "Transformer" cho biết mô hình sử dụng một loại mạng nơ-ron cụ thể.
  • "Pre-trained" cho biết khả năng tiếp nối văn bản của mô hình từng được xem là một giai đoạn tiền huấn luyện cho các tác vụ chuyên biệt, nhưng các mô hình đủ lớn có thể tuân theo chỉ dẫn ngôn ngữ tự nhiên của con người ngay cả khi không cần huấn luyện thêm.

Sinh văn bản

  • Giải thích quá trình dùng GPT2 để sinh văn bản từ prompt.
  • Chuyển văn bản thành danh sách token, chạy thuật toán để tính xác suất của các token ứng viên.
  • Chọn token tiếp theo và thêm vào danh sách token, rồi lặp lại quá trình này cho đến khi tạo đủ số từ.

Tokenizer

  • Quá trình chuyển văn bản thành danh sách số trước khi đưa vào mạng nơ-ron.
  • GPT2 triển khai tokenizer bằng một biến thể của thuật toán Byte pair encoding.

Embedding

  • Vì token đại diện cho một phần của ngôn ngữ con người, cần mã hóa mối quan hệ giữa các token để hoàn thành văn bản.
  • GPT2 dùng vector 768 chiều để embedding cho mỗi token.

Cơ chế attention

  • Giải thích về cơ chế self-attention, cốt lõi của kiến trúc Transformer.
  • Các vector của từng token ảnh hưởng lẫn nhau để truyền thuộc tính vào vector cuối cùng.

Feedforward

  • Một bước được thực hiện trong mạng nơ-ron sâu, xử lý đầu vào qua nhiều tầng.
  • Mỗi tầng biến đổi đầu vào bằng các tham số đã được học.

Block

  • Quá trình đã mô tả ở các bước trước được lặp lại qua nhiều tầng (block).
  • Đầu ra của mỗi block được dùng làm đầu vào cho block tiếp theo.

Ý kiến của GN⁺

  • Bài viết này rất hữu ích cho các chuyên gia cơ sở dữ liệu hoặc kỹ sư phần mềm, đồng thời có thể giúp hiểu quy trình phức tạp khi triển khai mô hình GPT bằng SQL.
  • Bằng cách giải thích các nguyên lý cơ bản và phương pháp triển khai mô hình GPT, bài viết mang lại cho độc giả cái nhìn sâu hơn về cách hoạt động của các mô hình ngôn ngữ AI.
  • Dù chứa nhiều nội dung kỹ thuật, bài viết vẫn đưa ra một ví dụ thú vị về sự kết hợp giữa AI và công nghệ cơ sở dữ liệu, qua đó giúp hiểu các xu hướng mới nhất trong lĩnh vực này.

1 bình luận

 
GN⁺ 2024-02-25
Ý kiến trên Hacker News
  • Đây là một điều tuyệt đẹp. Tác giả nói rằng trước đó mình đã nghiên cứu theo hướng tương tự bằng SQLite, và vẫn còn khá xa mới đưa mạng nơ-ron vào. Lấy cảm hứng từ chuỗi bài giảng makemore, sau khoảng 1 giờ thì bắt đầu dùng mạng nơ-ron, và đó là mức mà tác giả đã đạt tới. Việc chia nhỏ theo mô hình quan hệ thực sự là một bài luyện tập rất tốt.
  • Bản demo thì tốt, nhưng phần giải thích về causal masking trong bài viết khá dễ gây nhầm lẫn. Causal masking tồn tại để ngăn mô hình "nhìn trộm" các token tương lai trong lúc huấn luyện, và trong các kiến trúc như GPT, nó tồn tại để ép buộc tính tự hồi quy trong lúc suy luận. Trong suy luận thì dù sao cũng chỉ dùng token cuối cùng, nên token này sẽ chú ý đến toàn bộ chuỗi đầu vào. Vì vậy, token này chắc chắn không chỉ được quyết định bởi riêng embedding của token cuối cùng.
  • Có người hỏi liệu đây có phải là cách diễn đạt chính xác của vòng lặp điều khiển GPT hay không. Mã nguồn dường như biến chuỗi thành danh sách token, chạy thuật toán để trả về xác suất của các token, chọn token tiếp theo từ danh sách ứng viên, thêm nó vào danh sách token, rồi lặp lại quá trình quyết định có dừng sinh hay không. Cuối cùng, nó có vẻ chuyển danh sách token trở lại thành chuỗi để trả về. Điều này trông rất giống một state machine triển khai thuật toán Shlemiel the painter, và làm dấy lên câu hỏi về chi phí tính toán nội tại của tác vụ sinh.
  • Machine learning hiện đại không đòi hỏi tính đầy đủ Turing, nhưng mọi người vẫn đang cân nhắc khả năng AGI. Nếu tính đầy đủ Turing không cần thiết thì điều đó sẽ khá thú vị.
  • Liên kết liên quan: "GPT 60 dòng được làm bằng NumPy" - tháng 2 năm 2023 (146 bình luận)
  • Rất thích cái này. Một thứ mà một năm trước còn bắt đầu như kiểu phép thuật nào đó giờ đã được giải thích rất rõ ràng và gần như theo cách trẻ con cũng hiểu được.
  • Tôi đã hoàn toàn né tránh GPT và LLM. Cái này có vẻ sẽ tạo ra đầu ra văn bản với một mức độ trôi chảy nhất định, nhưng có lẽ không thể dùng để phân tích câu hỏi và trả lời. Tôi tò mò không biết chúng hoạt động như thế nào, hoặc liệu có bài blog đơn giản hay khóa học nào công bố một toy engine bằng ngôn ngữ như Python hay không. Cho đến giờ, mọi tài liệu hướng dẫn tôi thấy đều tập trung vào cách dùng nền tảng.
  • Cái này rất tuyệt. Trong ngữ cảnh tương tự, tác giả đã triển khai GPT chỉ bằng các hàm bảng tính và có kèm một video hướng dẫn.
  • Bất ngờ là rất sâu sắc, và nó trả lời một số câu hỏi tôi từng có lúc ban đầu: không chỉ câu hỏi "như thế nào" mà còn cả "tại sao". Tôi thấy mẫu softmax xuất hiện thường xuyên. Tôi ước người ta dạy nó như một "argmax khả vi" thay vì đưa công thức cho mọi người ngay từ đầu. Dĩ nhiên không phải toàn bộ là như vậy, nhưng nó thường được dùng theo cách đó.
  • Tôi cứ đọc thấy rằng GPT chỉ là một kiểu Markov "thông minh hơn", "phức tạp hơn" nhả ra từ tiếp theo theo một xác suất nào đó. Nhưng theo kinh nghiệm của tôi thì điều đó không đúng - nó hẳn phải học theo cách nào đó. Ví dụ, nếu bạn nói về một việc xảy ra hôm nay nhưng lại mâu thuẫn với quá khứ của nó (tôi dùng World Cup Qatar để thử), rồi đặt những câu hỏi bị ảnh hưởng bởi sự kiện đó, nó trả lời chính xác. Tôi thắc mắc làm sao một câu đơn giản như vậy (thông tin bạn cung cấp) lại có thể thay đổi xác suất của token tiếp theo xa đến thế.