1 điểm bởi GN⁺ 2023-11-01 | 1 bình luận | Chia sẻ qua WhatsApp
  • Bài viết có tiêu đề 'Mô hình Phind vượt GPT-4 trong lập trình với tốc độ GPT-3.5 và ngữ cảnh 16k'
  • Mô hình Phind vượt GPT-4 trong các tác vụ lập trình, đồng thời giữ được tốc độ của GPT-3.5 và ngữ cảnh 16k
  • Trang web www.phind.com, cần xem xét bảo mật trước khi truy cập
  • Trang web thông báo trình duyệt của người dùng đã cũ và cần được cập nhật
  • Có thể xem thêm thông tin về hỗ trợ trình duyệt trên trang dành cho nhà phát triển của Cloudflare
  • Hiệu năng và bảo mật của trang web do Cloudflare cung cấp

1 bình luận

 
GN⁺ 2023-11-01
Ý kiến trên Hacker News
  • Tôi đã so sánh Phind và GPT-4 trong vài phút với một câu hỏi thiết kế cấp cao khá mơ hồ về hàng đợi tác vụ phân tán. Phind chủ động đề xuất các thư viện cụ thể liên quan đến triển khai, khá khớp với phần tìm hiểu của tôi, và còn đưa mã ví dụ dùng các thư viện được đề xuất.
    Phind đính kèm nhiều nguồn liên quan như GitHub, Stack Overflow, nên rất hữu ích làm điểm khởi đầu để nghiên cứu tiếp; các gợi ý câu hỏi tiếp theo cũng khá tốt.
    Tuy nhiên GPT-4 có chất lượng trả lời tốt hơn, và nếu là phỏng vấn thiết kế hệ thống thì trông giống một ứng viên tốt hơn. Nó còn chỉ ra cả những bối cảnh ngoài phạm vi câu hỏi như logging và metrics, nắm bắt “câu hỏi đằng sau câu hỏi” tốt hơn, và ở các câu hỏi tiếp theo cũng cho cảm giác dẫn dắt cuộc đối thoại thu hẹp hướng đi rõ hơn.
    Đây không phải là bài kiểm tra năng lực lập trình như triển khai thuật toán, mà là so sánh với tư cách công cụ hỗ trợ tư duy cho thiết kế cấp cao và quyết định kiến trúc.

    • GPT-4 thật sự rất giỏi nắm bắt “câu hỏi đằng sau câu hỏi” so với các mô hình khác, và cũng cực kỳ hữu ích với cả những việc tùy ý mà tôi hoàn toàn không biết, như sửa tường nhà.
    • Tôi tò mò liệu các nguồn phong phú mà Phind đưa ra như GitHub, Stack Overflow có thực sự chính xác không.
    • Cũng cần nói rõ có dùng chỉ dẫn tùy chỉnh hay không thì so sánh mới không chỉ dừng ở chuyện kể cá nhân. Cũng nên đăng kèm prompt.
    • Phần “cung cấp ngữ cảnh” liên quan nhiều đến cách viết prompt tốt phù hợp với mô hình. Để so sánh công bằng, nên chỉ đưa mã và xem nó tạo ra gì.
    • Sẽ tốt nếu bạn chia sẻ một phần prompt đã dùng để hỏi.
  • Tôi đã hỏi một câu bẫy mà tôi hay dùng với LLM: “Hãy đưa ra 5 bài báo machine learning gần đây và mã nguồn dùng dữ liệu không gian địa lý như GeoJSON làm đầu vào và đầu ra.”
    Theo tôi hiểu thì không có lĩnh vực nghiên cứu mới như vậy, vì dữ liệu địa lý không liên tục nên không phù hợp với transformer, lại phụ thuộc ngữ cảnh nên cũng khó với các cách tiếp cận khác. Tôi sẵn sàng nghe lời giải thích tốt hơn từ các chuyên gia machine learning thực thụ.
    Thông thường LLM sẽ bịa ra 5 bài báo và mã nguồn không tồn tại, nhưng Phind đưa ra 5 liên kết có thật và còn giải thích vì sao chúng không phải là bài báo + mã dùng dữ liệu GIS; đó là câu trả lời tốt nhất tôi từng nhận được cho đến nay.

    • Tôi không hiểu chuyện này liên quan gì đến mô hình code. Mô hình code không được huấn luyện để tìm kiếm bài báo hay bài viết, mà để hoàn thành mã; việc tìm hallucination trong một tác vụ không liên quan thì không mấy thú vị.
    • Dùng ChatGPT 4 có duyệt web: https://chat.openai.com/share/19a425b5-ed37-469e-860d-65ee70...
      Không dùng ChatGPT 4 duyệt web: https://chat.openai.com/share/7e11b4a6-52f2-441a-8614-7266c3...
    • Một số tác vụ GIS dùng dữ liệu vector dạng điểm, đường, đa giác như vị trí đường sá hoặc đường viền tòa nhà, và có thể lưu ở các định dạng như GeoJSON hoặc WKT.
      Ngược lại, dữ liệu viễn thám hoặc ảnh vệ tinh có thể được lưu ở định dạng raster như GeoTIFF, về cơ bản là ảnh TIFF có kèm thông tin tham chiếu địa lý.
      Machine learning trên ảnh vệ tinh mà cả đầu vào lẫn đầu ra đều là dữ liệu không gian địa lý là hoàn toàn khả thi. Ví dụ trong phân loại sử dụng đất, đầu vào có thể là ảnh đa phổ, còn đầu ra là ảnh trong đó giá trị từng pixel biểu thị loại sử dụng đất đã được nhận diện.
      Machine learning cũng có thể được dùng để phát hiện footprint tòa nhà và trích xuất đường viền từ ảnh vệ tinh, và các đa giác đầu ra có thể lưu dưới dạng GeoJSON. Tôi cho rằng những thứ này là ví dụ về “machine learning dùng dữ liệu không gian địa lý làm đầu vào và đầu ra”.
      [1]: https://azure.microsoft.com/en-us/blog/how-to-extract-buildi...
    • EarthPT cũng đáng xem thử: https://arxiv.org/abs/2309.07207
  • Tôi mừng vì cạnh tranh đang tăng lên, nhưng vẫn nghĩ GPT-4 tốt hơn. Khi tôi yêu cầu một truy vấn để điền khoảng 200 từ đầu tiên từ full_text của bảng PostgreSQL vào teaser, Phind đưa ra câu trả lời tạo một hàm PL/pgSQL riêng rồi đếm từ bằng vòng lặp, còn GPT-4 đề xuất một truy vấn UPDATE trực tiếp bằng generate_seriesSTRING_AGG.

    • Nếu bật “Ignore Web Context” rồi chạy, hiệu năng trong các tác vụ thiết kế kiểu này có thể tốt hơn. Tôi nhận được câu trả lời có vẻ hợp lý hơn, còn tính nhất quán vẫn là phần đang được cải thiện: https://www.phind.com/search?cache=f0fkv5mxscwvagxgkuwnwgtl
    • Chỉ một ví dụ thì chưa đủ để đưa ra kết luận về hiệu năng.
    • Khi hỏi ngắn gọn và rõ ràng, tôi nhận được câu trả lời kiểu UPDATE your_table SET teaser = substring(full_text from '(\S+\s*){1,200}').
    • Tôi thật sự ghét teaser bài viết và nút “read more”, giờ thì biết đó là kết quả của việc cố ý cắt ngắn bài viết đó.
  • Tôi thắc mắc việc “một stream đơn có thể đạt tới 100 token/giây, còn GPT-4 giỏi lắm khoảng 20 token/giây” có phải là kết quả của việc dùng batch processing hay không. Nếu đúng vậy thì khá ấn tượng
    Phần nói rằng Phind Model có thể cần nhiều lần thử sinh hơn GPT-4 để đi đến đáp án đúng ở các câu hỏi khó, một phần có vẻ là vấn đề tinh chỉnh sampler
    Nếu chưa dùng, nên xem sampling dựa trên ngữ pháp (https://github.com/ggerganov/llama.cpp/pull/1773) và sampling động như mirostat, dynatemp (https://github.com/LostRuins/koboldcpp/pull/464)
    Ngay cả trong triển khai của Nvidia, có vẻ chỉ cần thay phần sampling bằng phiên bản Hugging Face là sẽ chạy được, và việc có thể tự triển khai các tính năng thử nghiệm như vậy là một lợi thế lớn khi thoát khỏi OpenAI

    • Để đạt 100 token/giây trên H100, họ dùng Flash Decoding của TensorRT-LLM: https://crfm.stanford.edu/2023/10/12/flashdecoding.html
    • Tôi không rõ đó có phải là con số ấn tượng không. Nếu xét việc LMDeploy tuyên bố đạt hơn 2000 token/giây trên A100 với batch size lớn, thì 100 token/giây trên H100 nghe có vẻ khá chậm
  • Tôi dùng GPT-4 rất nhiều, và trong một số tác vụ lập trình ban đầu tôi đưa ra, Phind bất ngờ ngang ngửa GPT-4. Nếu xét cửa sổ ngữ cảnh dài của Phind, có vẻ trong một số tác vụ nó còn có khả năng vượt GPT-4; đây là một thành quả đáng kể và khá ấn tượng

    • Nhân tiện, cửa sổ ngữ cảnh mặc định của GPT-4 qua ChatGPT sắp được đổi lên 32k
  • Tôi thích việc Phind trích dẫn nguồn của những gì nó thu thập. Tôi nghĩ điều này nên là bắt buộc với mọi LLM, và vì thế tôi thường khuyên dùng Phind thay vì ChatGPT

    • Thứ được trích dẫn không phải là nội dung mà LLM “thu thập”, mà là nội dung mô hình tìm kiếm đưa vào cho LLM. Không có gì bảo đảm rằng nó đã dùng những nội dung đó trong đầu ra thực tế, và đó cũng không phải toàn bộ tri thức cần thiết để tạo câu trả lời
      Tri thức được phân tán trong hàng triệu ví dụ mà mô hình đã học về ngôn ngữ và ngôn ngữ của con người, và cũng không còn tồn tại theo cách con người có thể hiểu được
    • Từ góc nhìn người dùng, nhận được đáp án đúng tốt hơn là được nhả ra các liên kết. Không có ý nói Phind tệ, nhưng trước khi ràng buộc các LLM vẫn còn ở giai đoạn đầu, nên tập trung trước vào việc làm cho chúng trả lời đúng
  • Trước đây tôi đã cho nó thử dùng một chương trình do tôi tự viết và so sánh với GPT-4; Phind không hiểu đúng điều tôi muốn, còn GPT-4 thì hiểu hoàn hảo và sẵn sàng tiếp tục theo các prompt để hoàn thiện
    https://www.phind.com/agent?cache=cloeowfla000dl1084ermly3c
    vs
    https://chat.openai.com/share/4147da33-3669-4657-88fa-3a9dfc...
    Có thể không đại diện cho toàn bộ, nhưng nó đi chệch sang những nội dung không được yêu cầu và các thông tin cơ bản mà tôi đã biết

    • Chế độ Pair Programmer hiện dùng GPT-4, hoặc GPT-3.5 nếu đã dùng hết hạn mức. Muốn dùng Phind Model thì cần thử lại ở chế độ tìm kiếm mặc định
      Khi dùng Phind Model trong tìm kiếm mặc định thì có vẻ hoạt động tốt: https://www.phind.com/search?cache=ln6dpdtv5auwn4cq1ofg3gs9
    • Vấn đề là nó tìm kiếm một vấn đề tương đối ngách và có lẽ mang về các kết quả chất lượng thấp. Văn bản tìm kiếm có trọng số lớn hơn so với mô hình nền, nên nếu ngữ cảnh đó không giúp được gì thì hiệu năng lại kém đi
      Có thể thấy hiện tượng này cả trong tìm kiếm Bing của ChatGPT, và tôi cũng từng gặp trong dự án của mình
  • Thật bất ngờ là CodeLlama hỗ trợ tới 16k token. Cửa sổ token là một trong những hạn chế khi tạo AI có thể ghi nhớ người dùng và tiếp nối các cuộc trò chuyện trước đó
    Với các ứng dụng AI tương lai, nơi những cuộc trò chuyện dài kéo dài nhiều tuần, nhiều tháng, nhiều năm, cửa sổ ngữ cảnh lớn là yếu tố then chốt; công nghệ hiện nay đã ấn tượng, nhưng sẽ còn thú vị hơn khi nó có thể nhớ tất cả những gì đã cùng học và làm trong quá khứ như một pair programmer thực thụ
    [0] https://huggingface.co/docs/transformers/main/model_doc/llam...

    • 640k là đủ cho bất kỳ ai
    • Với những cách như MemGPT, kích thước cửa sổ token đang được ảo hóa, nên ảnh hưởng của nó sẽ giảm đi
    • Tôi đang chờ ngày trí nhớ trung hạn như token mean pooling của sentence transformers được dùng cho mục đích này. Có vẻ điều đó hiển nhiên trước mắt mọi công ty, nhưng dường như chẳng ai định triển khai
  • Tôi biết là không phổ biến, nhưng tôi ước có cách dùng cái này trong Emacs hoặc Vim. Tôi không muốn dùng VS Code nữa

    • Xu hướng chuẩn hóa quanh VS Code trong vài năm qua thật sự là một trong những thay đổi đáng tiếc. Việc VS Code tồn tại thì tốt, nhưng chúng ta đang đi tới một thế giới nơi muốn dùng công cụ tốt nhất thì phải dùng VS Code
      Trong phát triển Java, IntelliJ đã từng như vậy, và tôi cho rằng điều đó rất không lành mạnh cho hệ sinh thái. Thật may là Copilot hỗ trợ Vim, nhưng tôi lo rằng chẳng bao lâu nữa sẽ không còn như vậy
    • Giá mà chiều sâu của tình yêu dành cho Emacs được thị trường định giá cao hơn
      Chẳng hạn có lập luận rằng âm nhạc và nghệ thuật bị kéo xuống mức trung bình thấp vì làm một album trị giá 10 đô la với hàng chục triệu người sinh lời hơn nhiều so với làm một album trị giá một triệu đô la với vài chục người
      Vì giá album dù sao cũng được đặt ở mức 10 đô la, và giờ tôi mới nghĩ rằng hiện tượng tương tự cũng áp dụng cho công cụ phát triển
    • Tôi đã thử đến mức :'<,'>y|call system('firefox ?q='.shellescape(@*).' &') để tạo phím tắt gửi văn bản đã chọn trong Vim tới Phind hoặc LLM khác
      Vấn đề còn lại là văn bản không được URL encode, và có lẽ có một cách thanh lịch, nhưng tôi vẫn chưa tìm ra
    • Dựa trên ví dụ Copilot của người khác, tôi đã tạm dựng một tích hợp Emacs ollama API cơ bản để hoàn thành mã đơn giản với LLM cục bộ
      Trên M1 Mac, mỗi lần suy luận thường mất khoảng 7 giây nên chậm hơn mong muốn, và ngữ cảnh gửi đi cũng rất đơn giản, nhưng dù sao vẫn vừa đủ dùng
      Tôi chưa định công khai vì nó phụ thuộc vào một Python façade để gửi/nhận yêu cầu-phản hồi kiểu Copilot với ollama, nhưng nếu có ai quan tâm thì tôi có thể chỉnh lại rồi đưa ra
    • Theo tôi biết, GitHub Copilot có tích hợp Emacs/Vim
  • So sánh nhanh thì kết quả rất tốt, và nếu tính cả lợi thế có tìm kiếm web và tham chiếu, nó tương tự GPT-4 nhưng nhanh hơn. Tuy nhiên có hai điểm nhỏ hơi tiếc
    Chế độ tối có phông chữ phần nội dung trả lời quá đậm và sáng, khiến các đoạn văn dài không phải mã khó đọc; còn chế độ sáng thì nhìn chung quá chói. Với văn bản dài, nền tối xám như OpenAI hoặc nền sáng màu sepia như HN sẽ tốt hơn
    Cụm “hơn 500 lượt dùng best model mỗi ngày (GPT-4)” trên trang giá cũng khiến tôi bối rối không rõ GPT-4 nghĩa là gì. Phind công bố mình là đối thủ của GPT-4 nhưng đồng thời lại ghi lượng dùng GPT-4 vào phần giá, nghe khá lạ

    • Vì cũng hỗ trợ GPT-4 làm mô hình trả lời, người dùng có thể chọn tùy mục đích. Tuy nhiên với đa số người dùng, chúng tôi khuyến nghị Phind Model