3 คะแนน โดย GN⁺ 2024-10-15 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • ความเร็วในการรัน FLUX บน Replicate เร็วขึ้นอย่างมาก และยังเปิดเผยโค้ดสำหรับการปรับแต่ง ทำให้ตรวจสอบการติดตั้งใช้งานและขยายต่อแบบคัสตอมได้
  • เมื่อวัดแบบ end-to-end, FLUX.1 [schnell] ลดเวลาลงเหลือ 0.29 วินาทีที่ 512x512·4 steps และ 0.72 วินาทีที่ 1024x1024·4 steps
  • การเพิ่มความเร็วเป็นผลจากการผสานการปรับแต่งบนพื้นฐาน flux-fp8-api, torch.compile, CuDNN attention kernel ที่เร็วขึ้นใน Torch รุ่น nightly และ HTTP API แบบ synchronous ตัวใหม่
  • Quantization ของ flux-fp8-api ทำให้ผลลัพธ์เปลี่ยนไปเล็กน้อย แต่มีผลต่อคุณภาพน้อยมาก และหากต้องการสามารถปิดได้ด้วย go_fast=false
  • Replicate เปิดเผยการปรับปรุงของ FLUX และกำลังร่วมมือกับ AI Compiler Study Group และนักวิจัยเพื่อสร้าง FLUX แบบโอเพนซอร์สที่รวดเร็ว

ความเร็วในการรัน FLUX และเดโมสาธารณะ

  • การรันโมเดล FLUX บน Replicate เร็วขึ้น และการติดตั้งใช้งานสำหรับการปรับแต่งถูกเผยแพร่เป็น โอเพนซอร์ส
  • ความเร็วแบบ end-to-end ที่วัดจากฝั่งตะวันตกของสหรัฐฯ โดยใช้ไคลเอนต์ Python มีดังนี้
    • FLUX.1 [schnell], 512x512, 4 steps: 0.29 วินาที, P90 0.49 วินาที
    • FLUX.1 [schnell], 1024x1024, 4 steps: 0.72 วินาที, P90 0.95 วินาที
    • FLUX.1 [dev], 1024x1024, 28 steps: 3.03 วินาที, P90 3.90 วินาที
  • เดโมของ FLUX.1 [schnell] เปิดให้ใช้งานแบบป้อนข้อมูลเรียลไทม์ และสามารถดูได้ที่ แอปเต็มและซอร์สโค้ด

วิธีการปรับแต่งและการควบคุมคุณภาพ

  • โมเดลจำนวนมากบน Replicate มาจากการมีส่วนร่วมของคอมมูนิตี้ แต่โมเดล FLUX ได้รับการดูแลร่วมกับ Black Forest Labs
  • มีการใช้แนวทาง 2 อย่างเพื่อเพิ่มความเร็ว
    • เริ่มต้นจาก flux-fp8-api ของ Alex Redden และใช้ torch.compile กับ CuDNN attention kernel ที่เร็วขึ้นจาก Torch nightly build
    • เพิ่ม HTTP API แบบ synchronous ตัวใหม่ของ Replicate เพื่อให้โมเดลภาพทั้งหมดทำงานได้เร็วขึ้น
  • Quantization ของ flux-fp8-api ทำให้ผลลัพธ์ของโมเดลเปลี่ยนไปเล็กน้อย แต่มีผลต่อคุณภาพน้อยมาก
    • มีเครื่องมือสำหรับเปรียบเทียบผลลัพธ์จากพรอมป์ต์หลายพันรายการของ FLUX.1 [schnell] และ FLUX.1 [dev] และสามารถดู ผลการเปรียบเทียบ ได้โดยตรง
    • สามารถปิดการปรับแต่งนี้ได้โดยตั้งค่าอินพุต go_fast เป็น false
  • เนื่องจากมักไม่ชัดเจนว่าผู้ให้บริการโมเดลใช้การปรับแต่งที่ส่งผลต่อคุณภาพหรือไม่ Replicate จึงเปิดเผยวิธีการปรับแต่งและเปิดให้ผู้ใช้ปิดได้เอง

โค้ดโอเพนซอร์สและแนวทางการใช้งาน

1 ความคิดเห็น

 
GN⁺ 2024-10-15
ความคิดเห็นจาก Hacker News
  • โมเดล text-to-image รู้สึกว่าไม่มีประสิทธิภาพเท่าไร สงสัยว่าเป็นไปได้ไหมและจะดีกว่าไหมถ้าแบ่งเป็นขั้น ๆ เช่น ข้อความ→scene graph→ภาพที่แบ่งส่วนเชิงความหมาย→ภาพสุดท้าย
    แต่ละขั้นสามารถฝึกแยกกันและทำให้เป็นโมดูลได้ และน่าจะทำให้แก้ไขภาพได้ง่ายขึ้น แทนที่จะต้องทิ้งทั้งหมดแล้วสร้างใหม่ด้วยพรอมป์ต์ใหม่ แบบนั้นการสร้างภาพอย่าง “วัตถุ x อยู่ข้างวัตถุ y และมีคำว่า foo อยู่ด้านบน” น่าจะง่ายขึ้นมาก ส่วนสไตล์ศิลปะหรือระดับความสมจริงก็ให้โมเดลเรนเดอร์ขั้นสุดท้ายที่แยกจากการทำตามพรอมป์ต์รับผิดชอบไป
    ให้ความรู้สึกคล้าย video2video หรือโมเดล img2img รายเฟรมที่ช่วยปรับปรุงเอาต์พุตของวิดีโอเกม
    https://www.theverge.com/2021/5/12/22432945/intel-gta-v-real...
    https://www.reddit.com/r/aivideo/comments/1fx6zdr/gta_iv_wit...

    • โดยทั่วไปมีให้เห็นหลายครั้งแล้วว่าแนวทางแบบนี้ล้มเหลวอยู่เรื่อย ๆ กับ โมเดลที่ใช้โครงข่ายประสาทเทียม
      ถ้าฝึกโครงข่ายประสาทเทียมจาก a→b และอีกตัวจาก b→c ได้ ปกติแล้วมักแทนการประกอบกันนั้นด้วยโครงข่ายประสาทเทียมที่ง่ายกว่าซึ่งไปจาก a→c โดยตรงได้ เรื่องนี้สมเหตุสมผล เพราะระหว่างแปลง a เป็น b อาจมีข้อมูลบางอย่างสูญหายไป โครงข่ายเดียวจะรับประกันได้ว่าข้อมูลที่เกี่ยวข้องของ a ซึ่งจำเป็นต่อการสร้าง c ถูกส่งต่อขึ้นไปยังชั้นบน ๆ
    • ผมรู้สึกว่านี่โดยพื้นฐานแล้วเหมือนแนวทางที่เคยล้มเหลวมานานในสาขาอย่างการรู้จำภาพ แล้วสุดท้ายก็แก้ได้ด้วยการอัดเมทริกซ์ให้ใหญ่ขึ้นและลึกขึ้นไม่ใช่หรือ
      วิธีสกัดคุณลักษณะแล้วให้เหตุผลแบบมนุษย์ฟังดูสมเหตุสมผล แต่สุดท้ายดูเหมือนว่าการขยาย pattern matching แบบล้วน ๆ ที่คอมพิวเตอร์ทำจะง่ายกว่า
    • อยากให้ศิลปะ AI ไปทางแนวทางแบบโมดูลาร์ เช่น สร้าง ตัวละคร, ฉากหลัง, สไตล์, การเคลื่อนไหวของกล้อง ในแต่ละขั้นแยกกัน
      การอธิบายทุกอย่างในคราวเดียวแล้วหวังว่าผลลัพธ์จะถูกใจนั้นไม่สมเหตุสมผลเลย
    • โมเดล diffusion โดยแก่นแท้ก็ทำแบบนั้นอยู่แล้ว เพียงแต่ไม่มีเส้นแบ่งที่ชัดเจนระหว่าง “scene graph” กับ “ภาพทั้งภาพ” เท่านั้น
      มันเริ่มจาก noise แล้วค่อย ๆ เพิ่มรายละเอียดมากขึ้นเรื่อย ๆ
    • ตรงนี้มีสมมติฐานที่ผิดว่าภาพคือชุดของวัตถุหลาย ๆ ชิ้น ภาพไม่จำเป็นต้องเป็นแบบนั้นเสมอไป
      ผมอยากได้ภาพถ่ายของ ขนฟูบนผิวลูกพีชสีเขียวน้ำเงินที่ถูกแช่แข็ง
  • ไลเซนส์ที่ไม่ให้ใช้เชิงพาณิชย์ไม่ใช่โอเพนซอร์ส เพราะถ้าเจ้าของลิขสิทธิ์เดิมหยุดดูแล คนอื่นก็สานต่อไม่ได้ หรือไม่ก็ต้องทำงานเหมือนทาสฟรี
    หัวใจของโอเพนซอร์สอยู่ที่ว่าเมื่อผู้เขียนเดิมหยุดทำงานแล้ว อะไรยังเป็นไปได้บ้าง โอเพนซอร์สให้ไลเซนส์แก่ทุกคนในการพัฒนาต่อ และแน่นอนว่านั่นรวมถึงความสามารถในการรับเงินด้วย ถ้าขาดแง่มุมนี้ก็ไม่ควรเรียกว่าโอเพนซอร์ส
    มีแค่ FLUX.1 [schnell] เท่านั้นที่เป็นโอเพนซอร์ส (Apache2) ส่วน FLUX.1 [dev] เป็นไลเซนส์ไม่ให้ใช้เชิงพาณิชย์

    • มี OpenFLUX.1 ซึ่งเป็นการ fine-tune โมเดล FLUX.1-schnell และเอาการ distillation ออก OpenFLUX.1 ใช้ไลเซนส์ Apache 2.0
      https://huggingface.co/ostris/OpenFLUX.1/
    • โอเพนซอร์สไม่ได้หมายถึงซอร์สมองเห็นและตรวจสอบได้หรอกหรือ? ผมไม่รู้จัก แอปซอร์สปิด ที่เปิดให้ดูซอร์สได้เลย
  • ถ้าอยากลองใช้ FLUX.schnell แบบง่าย ๆ ก็ใส่พรอมป์ต์ลงใน Pollinations URL ได้เลย
    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...
    ความเร็วน่าทึ่งจริง ๆ ใช้แค่ GPU L40S สามใบก็สร้างภาพสำหรับผู้ใช้ได้ 8,000 ภาพทุก 30 นาที อนึ่ง ผมเป็นคนจากฝั่ง Pollinations

    • คำว่า “แค่” ตรงนี้คงฟังดูแพงพอสมควรสำหรับคนส่วนใหญ่
  • งานที่ชอบที่สุดที่ทำด้วย Flux คือการสร้าง ภาพพื้นหลังสีขาว สำหรับ Substack ข้อความที่ตามมาดูยอดเยี่ยม และยังสามารถสื่อบางอย่างทางสายตาผ่านงานศิลป์ได้ด้วย
    [1]https://substackcdn.com/image/fetch/w_1456,c_limit,f_webp,q_...

    • ผมคิดว่าตัวอย่างนั้นแสดงให้เห็นชัดว่าทำไมศิลปินถึงโกรธ LLM กำลังเลียนแบบ สไตล์เฉพาะตัว ของศิลปินคนหนึ่งอย่างชัดเจน และผลคือศิลปินคนนั้นพลาดงานที่ควรได้รับค่าจ้าง
      ผมไม่รู้ว่าตัวเองมีจุดยืนที่ชัดเจนต่อเรื่องนี้ไหม เพราะเทคโนโลยีก็เดินหน้าต่อไปเรื่อย ๆ แต่ถึงอย่างนั้นก็น่าสนใจอยู่ดี
    • แชร์พรอมป์ต์ให้ได้ไหม?
  • Flux เป็นหนึ่งในตัวเต็งในด้าน การทำตามพรอมป์ต์ ในบรรดาระบบสร้างภาพที่โฮสต์ในเครื่อง แต่ depth of field ตื้น ๆ ที่โผล่มาทุกที่นั้นเอาออกได้ยากจนน่าหงุดหงิด

    • ดูเหมือนจะถูกปรับให้เหมาะกับภาพแนวศิลปะหรือเปล่า?
  • เพิ่งยกเลิกสมาชิก Midjourney ไป สำหรับงานที่ผมอยากทำ มันรู้สึกล้าหลังเกินไป
    ผมก็ลังเลอยู่นานเหมือนกันว่าจะใช้ Replicate กับ Ideogram ดีไหม

    • ช่วงหลังผมก็เริ่มสงสัยเหมือนกันว่ามันมีคุณค่าเกินกว่าความแปลกใหม่หรือไม่ อยากรู้ว่าเปลี่ยนไปใช้เครื่องมืออื่นแล้วหรือเปล่า หรือแค่ไม่เห็นคุณค่าในเครื่องมือพวกนั้นอีกต่อไปแล้ว
    • Midjourney มีโทนเฉพาะตัว และไม่เก่งเรื่องมือ เท้า กับตัวอักษร ผมเลยไม่เคยใช้
      ยังไม่ถึงปีนับตั้งแต่ Emad ล่มสลาย แต่กลับมีโมเดลโอเพนซอร์สที่รันในเครื่องและดีกว่าออกมาแล้ว นี่มันบ้ามาก แสดงให้เห็นว่าคูเมืองของบริษัทพวกนี้ตื้นแค่ไหน และเพราะพวกเขาเผาเงินมหาศาล เราก็เลยได้ประโยชน์ไปด้วย
  • มีใครรู้ไหมว่า FLUX 1.1 ถูกฝึกด้วยอะไร? ผมลองสร้างเกือบ 100 ภาพด้วยพรอมป์ต์สองคำแบบ "ชื่อไฟล์กล้อง + คำง่าย ๆ" ในโมเดล pro แล้วทั้งหมดดูเหมือนรูปถ่ายจากมือถือของใครสักคน
    ถ้าไม่มีข้อความอยู่ในภาพ ผมคงไม่ทันคิดด้วยซ้ำว่าเป็นภาพ AI บางครั้งก็ดูเหมือนรูปที่ถูกครอป มีรูปอาหาร โต๊ะกินข้าวรก ๆ และอพาร์ตเมนต์ออกมาเยอะมาก
    เขาไป scrape โพสต์ Facebook สาธารณะ, Snapchat, Vkontakte มาหรือเปล่า? หรือซื้อภาพส่วนตัวจาก OneDrive หรือ Dropbox? ถ้าใส่ชื่อผู้หญิงเป็นคำที่สอง ฟิลเตอร์ NSFW แทบจะทำงานเสมอ ผมเลยเดาว่าในชุดฝึกน่าจะมีภาพที่ค่อนข้างเป็นส่วนตัวอยู่
    อยากให้ลองดูเอง ระวังเพลงเล่นอัตโนมัติ
    people: https://vm.tiktok.com/ZGdeXEhMg/
    food and stuff: https://vm.tiktok.com/ZGdeXEBDK/
    signs: https://vm.tiktok.com/ZGdeXoAgy/
    [edit] เวลาดูภาพพวกนี้แล้วรู้สึกไม่สบายใจเหมือนกำลังดู รูปส่วนตัว ของใครสักคน พรอมป์ต์อย่าง "IMG00012.JPG forbid" ไม่มีข้อมูลชี้นำมากพอที่จะอธิบายภาพพวกนี้ได้ ดังนั้นทั้งหมดจึงน่าจะมาจากข้อมูลฝึกเท่านั้น
    ผมไม่เชื่อว่า FLUX 1.1 pro ใช้ชุดฝึกที่แตกต่างโดยพื้นฐานจากโมเดลสาธารณะรุ่นก่อน ๆ เพียงแต่อาจอ่อนไหวต่อการสร้างภาพแบบนี้มากกว่า
    ความรู้สึกมันแปลกจริง ๆ ดังนั้นขอถามอีกครั้งว่า มีข้อมูลเกี่ยวกับข้อมูลฝึกที่ใช้กับโมเดลเหล่านี้ไหม?

    • ไม่ใช่แค่ flux เท่านั้น โมเดลอื่น ๆ รวมถึง Stable Diffusion ก็ทำแบบเดียวกันได้
      โพสต์ Reddit สองอันด้านล่างพูดถึงรูปแบบการตั้งชื่อไฟล์นี้อยู่บ้าง
      DSC_0001-9999.JPG - ค่าเริ่มต้นของ Nikon
      DSCF0001-9999.JPG - ค่าเริ่มต้นของ Fujifilm
      IMG_0001-9999.JPG - ภาพทั่วไป
      P0001-9999.JPG - ค่าเริ่มต้นของ Panasonic
      CIMG0001-9999.JPG - ค่าเริ่มต้นของ Casio
      PICT0001-9999.JPG - ค่าเริ่มต้นของ Sony
      Photo_0001-9999.JPG - รูปภาพจาก Android
      VID_0001-9999.mp4 - วิดีโอทั่วไป
      นอกจากนี้ยังทำเวอร์ชัน ชื่อไฟล์ซอฟต์แวร์ 3D ไว้ด้วย ทดสอบทั้งหมดแล้ว และมีแค่บางส่วนที่ได้ผล
      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_...
    • ผมคิดว่าโอกาสที่จะเป็นเพราะชุดข้อมูลฝึกดิบมีน้อยมาก ผมเจอปัญหาตรงกันข้าม คือโทเคน "background" ทำให้ทั้งภาพเบลออย่างแรงแทบไม่ว่ามันจะถูกใช้ในพรอมป์ต์อย่างไร แต่น่าสนใจที่การตีความพรอมป์ต์กลับดีขึ้นมาก
      น่าจะมีการปรับแต่งจำนวนมากที่ทำให้โมเดลชอบ ภาพสไตล์ flux พร้อมกับการชดเชยด้านข้อความอย่างแรง
      ไม่ว่ากระบวนการที่ทำจะเป็นแบบไหน ก็ทำให้โมเดลไวเกินไปจนแค่มีคำเฉพาะบางคำเข้ามา ก็ส่งผลแรงกว่า LoRA แล้ว
      รูปที่คุณให้ดูไม่ได้โดดเด่นเป็นพิเศษเมื่อมองในบริบททั้งหมด การออกนอกฟอร์แมตภาพเริ่มต้นเพื่อให้ได้ผลลัพธ์แบบสมจริงมาก ๆ ไม่ได้ต้องใช้ความพยายามมากนัก ส่วนตัวผมคิดว่าไม่ใช่ว่าพวกเขาพยายามซ่อนความสมจริงสุดขีด แต่ใกล้เคียงกับการตั้งค่าเริ่มต้นให้เป็นภาพแบบที่ผู้คนต้องการมากกว่า
    • ผมก็เจอแบบเดียวกัน และมันแปลกมาก ตอนแรกผลลัพธ์ออกมาดี แต่หลังจากนั้นก็พัง
      ไม่รู้ว่าทำไมคอมเมนต์ที่วิจารณ์ Flux ถึงโดน downvote หรือ flag กันหมด มันค่อนข้างแปลก
  • เขาชี้ไปที่หน้าที่เปรียบเทียบแล้วอ้างว่าคุณภาพใกล้เคียงกัน แต่ก่อนอื่นเห็นได้ชัดมากว่ารายละเอียดน้อยกว่ามาก ที่แย่กว่านั้นคือ ตัวอย่าง "มุมมองด้านหน้า 3/4 ของ Corvette ปี 2017 สีเหลืองที่กำลังเข้าโค้งบนถนนบนภูเขา มองลงไปเห็นหุบเขาสีเขียว ในวันที่มีเมฆมาก"
    โมเดลต้นฉบับแสดง ด้านหน้า แต่เวอร์ชันเร็วแสดง ด้านหลัง ของ Corvette เป็นภาพคนละแบบกันโดยสิ้นเชิง ไม่ใช่แค่คล้ายกัน แต่แตกต่างอย่างชัดเจน
    https://flux-quality-comparison.vercel.app/

  • ทุกครั้งที่มีเธรดเกี่ยวกับโมเดลของ Meta ก็จะมีคนเข้ามาแก้กันเต็มไปหมดว่าไม่ใช่โอเพนซอร์สจริง ๆ
    ถ้าอย่างนั้น FLUX ก็ควรทำให้ชัดเจนเหมือนกัน ในบรรดาโมเดลที่เผยแพร่ออกมา มีเพียง FLUX schnell ตัวเดียวที่เป็นโอเพนซอร์ส และเพราะมันถูก distill มาจากโมเดลกรรมสิทธิ์ จึงจัดการได้ยากกว่ามาก
    น่าขันที่โมเดล Llama ของ Meta มีไลเซนส์ที่ผ่อนปรนกว่ามากในเชิงใช้งานจริง และยัง fine-tune ได้ง่ายมากด้วยเฟรมเวิร์กโอเพนซอร์สของ Meta เองหรือเครื่องมือ third-party หลายตัว ขณะที่ FLUX schnell ไม่ได้เป็นแบบนั้น
    ผมคิดว่าคอมมูนิตี้โอเพนซอร์สควรรวมพลังกันรอบ OpenFLUX หรือโปรเจกต์คล้าย ๆ กันที่พยายามแก้ข้อจำกัดเทียมของ Schnell: https://huggingface.co/ostris/OpenFLUX.1

  • บอกว่า “เราเพิ่ม synchronous HTTP API ใหม่ที่ทำให้โมเดลภาพทั้งหมดของ Replicate เร็วขึ้นมาก” แล้วทำไมแค่เป็น synchronous ถึงเร็วขึ้นล่ะ? เลยกดเข้าไปดู
    https://replicate.com/changelog/2024-10-09-synchronous-api
    “ตอนนี้ client library และ API ทำให้การรันโมเดลเร็วขึ้นมาก โดยเฉพาะเมื่อมีไฟล์ถูกส่งกลับมา”
    …ก็ขอบคุณนะ?
    แค่แชร์ความอึดอัดในฐานะนักพัฒนา ถ้าอยากให้จำได้และอยากให้เราเป็นผู้สนับสนุน ก็อยากให้ อธิบายให้ดีกว่านี้อีกนิด

    • ในย่อหน้าที่สองก็อธิบายเหตุผลไว้ตรงตัวเลย แทนที่จะส่ง URL กลับมาให้ต้องยิง request ครั้งที่สองเพื่อรับข้อมูลไฟล์ ตอนนี้ส่ง ข้อมูลไฟล์ จริงกลับมาใน response เลย
    • ใช่ ตรงนี้ยังไม่ชัดเจน เราเพิ่มอีกย่อหน้าหนึ่งเพื่ออธิบายว่าเมื่อก่อนต้องทำอะไรบ้างแล้ว