3 điểm bởi GN⁺ 2024-10-15 | 1 bình luận | Chia sẻ qua WhatsApp
  • Tốc độ chạy FLUX trên Replicate đã nhanh hơn đáng kể, đồng thời mã tối ưu hóa cũng được công khai, cho phép kiểm tra cách triển khai và mở rộng tùy chỉnh
  • Theo phép đo end-to-end, FLUX.1 [schnell] giảm xuống còn 0,29 giây ở 512x512·4 steps và 0,72 giây ở 1024x1024·4 steps
  • Cải thiện tốc độ là kết quả của việc kết hợp tối ưu hóa dựa trên flux-fp8-api, torch.compile, CuDNN attention kernel nhanh của nightly Torch và API HTTP đồng bộ mới
  • Lượng tử hóa của flux-fp8-api làm thay đổi đầu ra đôi chút, nhưng tác động đến chất lượng là nhỏ; nếu cần có thể tắt bằng go_fast=false
  • Replicate công khai các cải tiến cho FLUX và đang hợp tác với AI Compiler Study Group cùng các nhà nghiên cứu để tạo ra FLUX mã nguồn mở nhanh

Tốc độ chạy FLUX và demo công khai

  • Việc chạy mô hình FLUX trên Replicate đã nhanh hơn, và phần triển khai tối ưu hóa được công khai dưới dạng mã nguồn mở
  • Tốc độ end-to-end đo từ miền Tây Hoa Kỳ bằng client Python như sau
  • Demo FLUX.1 [schnell] được cung cấp theo kiểu nhập liệu thời gian thực, và bạn cũng có thể xem toàn bộ ứng dụng cùng mã nguồn

Cách tối ưu hóa và kiểm soát chất lượng

  • Nhiều mô hình trên Replicate do cộng đồng đóng góp, nhưng mô hình FLUX được duy trì với sự hợp tác của Black Forest Labs
  • Hai hạng mục công việc đã được áp dụng để cải thiện tốc độ
    • Lấy flux-fp8-api của Alex Redden làm điểm khởi đầu, sử dụng torch.compileCuDNN attention kernel nhanh trong bản build nightly Torch
    • Thêm API HTTP đồng bộ mới của Replicate để mọi mô hình ảnh hoạt động nhanh hơn
  • Lượng tử hóa của flux-fp8-api làm thay đổi đầu ra mô hình đôi chút, nhưng tác động đến chất lượng là nhỏ
    • Có công cụ so sánh đầu ra của hàng nghìn prompt trên FLUX.1 [schnell] và FLUX.1 [dev], và bạn có thể trực tiếp xem kết quả so sánh
    • Có thể vô hiệu hóa tối ưu hóa này bằng cách đặt đầu vào go_fast thành false
  • Vì thường không rõ nhà cung cấp mô hình có áp dụng các tối ưu hóa ảnh hưởng đến chất lượng hay không, Replicate công khai cách tối ưu hóa và cho phép người dùng tắt chúng

Mã nguồn mở và cách khai thác

1 bình luận

 
GN⁺ 2024-10-15
Ý kiến trên Hacker News
  • Các mô hình văn bản-thành-hình ảnh có cảm giác kém hiệu quả. Tôi tự hỏi liệu có thể, và có tốt hơn không, nếu chia thành các bước như văn bản→scene graph→hình ảnh được phân đoạn theo ngữ nghĩa→hình ảnh cuối cùng
    Có vẻ từng bước có thể được huấn luyện riêng và mô-đun hóa; cũng sẽ dễ chỉnh sửa hình ảnh hơn thay vì phải làm lại toàn bộ bằng đầu ra prompt mới. Như vậy việc tạo ra kiểu "đối tượng x ở cạnh đối tượng y, và phía trên có chữ foo" sẽ dễ hơn nhiều, còn phong cách nghệ thuật hay mức độ chân thực có thể giao cho mô hình render cuối cùng, tách biệt với việc tuân thủ prompt
    Cảm giác giống video2video hoặc mô hình img2img theo từng khung hình để cải thiện đầu ra của trò chơi điện tử
    https://www.theverge.com/2021/5/12/22432945/intel-gta-v-real...
    https://www.reddit.com/r/aivideo/comments/1fx6zdr/gta_iv_wit...

    • Nhìn chung, cách tiếp cận như thế này đã nhiều lần cho thấy là liên tục thất bại với mô hình dựa trên mạng nơ-ron
      Nếu có thể huấn luyện một mạng nơ-ron đi từ a→b và một mạng nơ-ron đi từ b→c, thì thường có thể thay tổ hợp đó bằng một mạng nơ-ron đơn giản hơn đi trực tiếp từ a→c. Điều này hợp lý vì có thể có thông tin bị mất khi chuyển a thành b. Một mạng nơ-ron đơn lẻ đảm bảo thông tin liên quan của a cần để tạo c được truyền lên các tầng cao hơn
    • Tôi nghĩ về bản chất đây chẳng phải cũng giống cách tiếp cận đã thất bại lâu năm trong các lĩnh vực như nhận diện hình ảnh, rồi cuối cùng được giải quyết bằng cách cứ đẩy ma trận lớn hơn và sâu hơn sao
      Cách trích xuất đặc trưng rồi suy luận như con người nghe có vẻ hợp lý, nhưng rốt cuộc có vẻ mở rộng pattern matching thuần túy theo kiểu máy tính làm lại dễ hơn
    • Tôi mong nghệ thuật AI đi theo hướng mô-đun. Kiểu như tạo nhân vật, bối cảnh, phong cách, chuyển động camera ở từng bước riêng biệt
      Việc mô tả mọi thứ cùng một lúc rồi hy vọng kết quả vừa ý là không hợp lý
    • Mô hình khuếch tán về bản chất làm như vậy. Chỉ là không có ranh giới rõ ràng giữa "scene graph" và "toàn bộ hình ảnh" mà thôi
      Nó bắt đầu từ nhiễu rồi dần dần thêm ngày càng nhiều chi tiết
    • Ở đây có giả định sai rằng hình ảnh là tập hợp các đối tượng. Hình ảnh không nhất thiết như vậy
      Tôi muốn một bức ảnh lông tơ quả đào màu xanh ngọc bị đóng băng
  • Giấy phép phi thương mại không phải là nguồn mở. Vì nếu chủ bản quyền gốc ngừng bảo trì thì người khác không thể tiếp tục, hoặc phải làm như nô lệ miễn phí
    Cốt lõi của nguồn mở nằm ở việc điều gì có thể xảy ra khi tác giả gốc ngừng làm. Nguồn mở cấp cho bất kỳ ai giấy phép tiếp tục phát triển, và điều đó đương nhiên bao gồm cả khả năng được nhận tiền. Nếu thiếu khía cạnh này thì không nên gọi là nguồn mở
    Chỉ FLUX.1 [schnell] là nguồn mở (Apache2), còn FLUX.1 [dev] là giấy phép phi thương mại

    • OpenFLUX.1, được fine-tune từ mô hình FLUX.1-schnell và loại bỏ distillation. OpenFLUX.1 dùng giấy phép Apache 2.0
      https://huggingface.co/ostris/OpenFLUX.1/
    • Nguồn mở chẳng phải nghĩa là có thể xem và kiểm tra mã nguồn sao? Tôi không biết ứng dụng nguồn đóng nào cho phép xem mã nguồn cả
  • Nếu muốn thử FLUX.schnell dễ dàng, chỉ cần đưa prompt vào URL của Pollinations
    https://pollinations.ai/p/a_donkey_holding_a_sign_with_flux_...
    https://pollinations.ai/p/a_donkey_holding_a_sign_with_flux_...
    https://pollinations.ai/p/Minimalist%20and%20conceptual%20ar...
    Tốc độ thật sự đáng kinh ngạc. Chỉ với ba GPU L40S mà tạo 8.000 ảnh mỗi 30 phút cho người dùng. Nói thêm, tôi là người của Pollinations

    • Ở đây, cách nói "chỉ" nghe có vẻ khá đắt đối với phần lớn mọi người
  • Việc tôi thích làm nhất với Flux là tạo hình ảnh nền trắng cho Substack. Phần văn bản đi kèm rất xuất sắc, và thông qua artwork cũng có thể truyền tải điều gì đó về mặt thị giác
    [1]https://substackcdn.com/image/fetch/w_1456,c_limit,f_webp,q_...

    • Tôi nghĩ ví dụ đó cho thấy rõ vì sao các nghệ sĩ tức giận. LLM rõ ràng đang bắt chước phong cách riêng của một nghệ sĩ cụ thể, và kết quả là nghệ sĩ đó mất đi các công việc có trả phí
      Tôi không biết mình có lập trường rõ ràng về chuyện này không. Công nghệ thì vẫn tiếp tục tiến lên. Dù vậy, chuyện này vẫn thú vị
    • Bạn có thể chia sẻ prompt được không?
  • Flux là ứng viên hàng đầu về tuân thủ prompt trong số các hệ thống tạo ảnh host cục bộ, nhưng độ sâu trường ảnh nông xuất hiện khắp nơi thì khó loại bỏ đến mức gây khó chịu

    • Có vẻ nó được tối ưu cho hình ảnh nghệ thuật?
  • Tôi vừa hủy đăng ký Midjourney. Với những việc tôi muốn làm thì nó có cảm giác tụt lại quá xa
    Tôi cũng đã cân nhắc khá lâu việc dùng Replicate và Ideogram

    • Gần đây tôi cũng tự hỏi liệu nó còn có giá trị nào vượt lên trên sự mới lạ không. Không biết bạn đã chuyển sang công cụ khác, hay là không còn thấy giá trị ở những công cụ như vậy nữa
    • Midjourney có cảm giác rất riêng, lại yếu ở bàn tay, bàn chân và chữ, nên tôi chưa từng dùng
      Chưa đầy một năm kể từ khi Emad sa sút mà đã có một mô hình open source chạy local tốt hơn xuất hiện, đúng là điên rồ. Điều đó cho thấy hào lũy của các công ty này nông đến mức nào, và nhờ họ đốt một lượng tiền khổng lồ mà chúng ta được hưởng lợi
  • Có ai biết FLUX 1.1 được huấn luyện bằng gì không? Tôi đã tạo gần 100 ảnh bằng model pro với prompt hai từ kiểu “tên file camera + một từ đơn giản”, và tất cả đều trông như ảnh chụp bằng điện thoại của ai đó
    Nếu không có chữ thì đến mức tôi thậm chí sẽ không nghĩ đó là ảnh AI. Đôi khi trông như ảnh bị cắt, rồi có rất nhiều ảnh đồ ăn, bàn ăn bừa bộn và căn hộ
    Họ đã scrape bài đăng Facebook công khai, Snapchat, Vkontakte à? Hay đã mua ảnh cá nhân từ OneDrive hoặc Dropbox? Nếu đặt từ thứ hai là tên phụ nữ thì gần như lúc nào bộ lọc NSFW cũng kích hoạt. Vì vậy tôi đoán tập huấn luyện có khá nhiều ảnh rất riêng tư
    Hãy tự xem thử. Cẩn thận nhạc tự phát
    people: https://vm.tiktok.com/ZGdeXEhMg/
    food and stuff: https://vm.tiktok.com/ZGdeXEBDK/
    signs: https://vm.tiktok.com/ZGdeXoAgy/
    [edit] Nhìn những hình ảnh này khiến tôi thấy khó chịu như đang xem ảnh riêng tư của ai đó. Một prompt như “IMG00012.JPG forbid” không có đủ thông tin gợi dẫn để mô tả những hình ảnh như vậy, nên tất cả hẳn phải đến từ dữ liệu huấn luyện
    Tôi không tin FLUX 1.1 pro đã dùng một tập huấn luyện khác về căn bản so với các model công khai trước đây. Chỉ là nó có thể dễ bị kiểu sinh ảnh này hơn
    Cảm giác thật sự rất lạ. Vậy nên xin hỏi lại: có thông tin nào về dữ liệu huấn luyện được dùng cho các model này không?

    • Không chỉ flux mới vậy; các model khác, gồm cả Stable Diffusion, cũng có thể làm tương tự
      Hai bài Reddit bên dưới có đề cập một chút đến quy ước đặt tên file này
      DSC_0001-9999.JPG - mặc định của Nikon
      DSCF0001-9999.JPG - mặc định của Fujifilm
      IMG_0001-9999.JPG - ảnh thông thường
      P0001-9999.JPG - mặc định của Panasonic
      CIMG0001-9999.JPG - mặc định của Casio
      PICT0001-9999.JPG - mặc định của Sony
      Photo_0001-9999.JPG - ảnh Android
      VID_0001-9999.mp4 - video thông thường
      Ngoài ra tôi cũng đã tạo phiên bản tên file phần mềm 3D. Tôi đã thử tất cả, và chỉ một số có hiệu quả
      Autodesk Filmbox (FBX): my_model0001-9999.fbx
      Stereolithography (STL): Model0001-9999.stl
      3ds Max: 3ds_Scene0001-9999.max
      Cinema 4D: Project0001-9999.c4d
      Maya (ASCII): Animation0001-9999.ma
      SketchUp: SketchUp0001-9999.skp
      [1]: https://www.reddit.com/r/StableDiffusion/comments/1fxkt3p/co...
      [2]: https://www.reddit.com/r/StableDiffusion/comments/1fxdm1n/i_...
    • Tôi cho rằng khả năng do dataset huấn luyện thô là rất thấp. Tôi đã gặp vấn đề ngược lại. Token “background” đưa vào prompt gần như bất kể dùng thế nào cũng tạo ra độ nhòe mạnh trên toàn bộ ảnh, nhưng điều thú vị là khả năng diễn giải prompt lại tốt hơn nhiều
      Cùng với việc hiệu chỉnh mạnh đối với văn bản, rất có khả năng họ đã tinh chỉnh rất nhiều để model ưu tiên các hình ảnh đậm chất flux
      Dù họ theo quy trình nào, chỉ cần có một số thuật ngữ nhất định là đã khiến model trở nên quá nhạy, tác động còn mạnh hơn LoRA
      Những ảnh bạn đưa ra không đặc biệt đáng chú ý trong toàn bộ bối cảnh. Không cần nhiều công sức để vượt khỏi định dạng ảnh mặc định và thu được kết quả siêu thực. Cá nhân tôi nghĩ họ không phải đang cố che giấu tính siêu thực, mà gần hơn là đặt mặc định theo kiểu ảnh mọi người muốn
    • Tôi cũng gặp điều tương tự và thấy thật sự kỳ lạ. Ban đầu cho kết quả tốt, rồi về sau thì hỏng
      Tôi không hiểu vì sao tất cả bình luận phê bình Flux đều bị downvote hoặc gắn cờ, khá là lạ
  • Họ trỏ tới trang so sánh và tuyên bố chất lượng tương tự, nhưng trước hết rất rõ là độ chi tiết ít hơn nhiều. Tệ hơn là ví dụ “góc nhìn 3/4 từ phía trước của một chiếc Corvette 2017 màu vàng đang ôm cua trên đường núi nhìn xuống thung lũng xanh vào ngày nhiều mây”
    Model gốc hiển thị phía trước, còn phiên bản tốc độ lại hiển thị phía sau của Corvette. Đó là một bức hoàn toàn khác. Không phải tương tự, mà khác biệt rõ rệt
    https://flux-quality-comparison.vercel.app/

  • Mỗi khi có thread về model của Meta, lại có hàng loạt chỉnh sửa rằng đó không phải open source thật sự
    Vậy thì với FLUX cũng cần nói rõ. Trong số các model được công bố, chỉ có FLUX schnell là open source, và vì được chưng cất từ model độc quyền nên khó xử lý hơn nhiều
    Trớ trêu là các model Llama của Meta, xét từ góc độ thực dụng, có giấy phép dễ dãi hơn nhiều, và cũng rất dễ fine-tune bằng framework open source của chính Meta hoặc nhiều công cụ bên thứ ba. Còn FLUX schnell thì không như vậy
    Tôi nghĩ cộng đồng open source nên tập trung lực quanh OpenFLUX hoặc các dự án tương tự nhằm sửa các ràng buộc nhân tạo của Schnell: https://huggingface.co/ostris/OpenFLUX.1

  • Họ nói rằng “đã thêm một API HTTP đồng bộ mới giúp tất cả các mô hình hình ảnh của Replicate nhanh hơn nhiều”, nhưng tại sao đồng bộ thì lại nhanh? Tôi bấm vào xem thử
    https://replicate.com/changelog/2024-10-09-synchronous-api
    “Giờ đây, các thư viện client và API giúp việc chạy mô hình nhanh hơn nhiều, đặc biệt là khi trả về tệp”
    …thì cũng cảm ơn đấy?
    Tôi đang chia sẻ sự bức bối với tư cách một lập trình viên. Nếu muốn để lại ấn tượng và khiến chúng tôi trở thành người ủng hộ, mong họ giải thích rõ hơn một chút

    • Lý do được giải thích đúng nghĩa ngay ở đoạn thứ hai. Thay vì trả về một URL khiến bạn phải gửi yêu cầu thứ hai để lấy dữ liệu tệp, họ trả về trực tiếp dữ liệu tệp trong phản hồi
    • Đúng vậy. Phần này chưa rõ ràng. Tôi đã thêm thêm một đoạn giải thích trước đây phải làm gì