Fred เป็นเครื่องมือการถดถอยแบบ Visual OpenSource ที่ใช้ในการเปรียบเทียบสองกรณีของเว็บไซต์ เฟร็ดรับผิดชอบการทดสอบการถดถอยด้วยสายตาอัตโนมัติโดยมีวัตถุประสงค์เพื่อให้แน่ใจว่าฟังก์ชั่นการทำงานจะไม่ถูกทำลายโดยการเปรียบเทียบปัจจุบัน (พื้นฐาน) และเวอร์ชันที่อัปเดตของเว็บไซต์ เฟร็ดเปรียบเทียบสิ่งต่อไปนี้:
การวิเคราะห์ด้วยภาพคำนวณข้อผิดพลาดค่าเฉลี่ยกำลังสองและดัชนีความคล้ายคลึงกันของโครงสร้างบนภาพหน้าจอของเว็บไซต์พื้นฐานและเว็บไซต์ที่ได้รับการปรับปรุงในขณะที่ AI ภาพจะดูที่เค้าโครงและการเปลี่ยนแปลงเนื้อหาอย่างอิสระโดยใช้เทคนิคการเรียนรู้ของเครื่องภาพการแบ่งส่วนภาพเพื่อรับรู้โครงสร้างข้อความระดับสูงและภาพภาพ สิ่งนี้จะช่วยลดผลกระทบของเนื้อหาแบบไดนามิกที่ให้ผลบวกปลอม
ใช้เฟร็ดหากคุณต้องการ:
เฟร็ดได้รับการออกแบบให้ปรับขนาดได้ มันมีคิวภายในและสามารถประมวลผลเว็บไซต์แบบขนานขึ้นอยู่กับปริมาณของ RAM และ CPU (หรือ GPU) ที่มีอยู่
_fred-v1 โปรดทราบว่า v2.x (เวอร์ชันปัจจุบัน) ไม่มีรหัสเพื่อฝึกอบรม/ฝึกอบรมรุ่น ML หากคุณต้องการทำเช่นนั้นโปรดตรวจสอบรหัสต้นฉบับในโฟลเดอร์ V1 แบบจำลองนั้นเหมือนกันดังนั้นหากคุณสร้างโมเดลที่ผ่านการฝึกอบรมแบบกำหนดเองของคุณเสียบใน V2 และมันจะใช้งานได้ คุณสามารถเริ่มต้นเฟร็ดได้ว่าเป็นนักเทียบท่าหรือเป็นกระบวนการในท้องถิ่น
หากคุณต้องการโคลนและเรียกใช้ซอฟต์แวร์เราได้จัดเตรียม DockerFile เพื่อเรียกใช้:
git clone https://github.com/adobe/frontend-regression-validator.git
cd frontend-regression-validator/docker
docker build --no-cache -t fred .
docker run -p 5000:5000 -m 8g --memory-reservation=8g --oom-kill-disable=True --memory-swap 8G fred หากคุณยังพบปัญหาเกี่ยวกับข้อผิดพลาดของหน่วยความจำให้จัดสรรหน่วยความจำเพิ่มเติมจากแอพ UI Docker เพียงคลิกที่ไอคอน Docker ในแถบเครื่องมือของคุณไปที่ Preferences - Advanced จากนั้นดึงแถบเลื่อนไปที่ 8GB หรือมากกว่าโดยเฉพาะอย่างยิ่งถ้าคุณวางแผนที่จะใช้ ML (ไม่บังคับ) เราแนะนำให้ใช้งานในเครื่องแทนที่จะใช้ DockerFile หรือเพิ่มหน่วยความจำที่จัดสรรให้กับ Docker at least 8GB, prefferably 16GB
ตรวจสอบให้แน่ใจว่าคุณติดตั้ง chromedriver แล้ว หากคุณไม่มีให้ติดตั้งบน Mac ด้วย:
brew tap homebrew/cask && brew cask install chromedriver
หรือบน linux ด้วย:
sudo apt-get install chromium-chromedriver
จากนั้นเรียกใช้สิ่งต่อไปนี้:
git clone https://github.com/adobe/frontend-regression-validator.git
cd frontend-regression-validator
pip install -r requirements.txt
cd fred/ml
cat model_files.bz2.parta* > model_files.bz2
tar xjf model_files.bz2
cd ..
python3 run.py
สิ่งนี้จะเปิดตัวอินสแตนซ์ของขวดที่ตอบรับคำขอรวมถึงการเสนอส่วนต่อประสานผู้ใช้เว็บ QuickNote: ใช้ --port เพื่อระบุพอร์ตการฟังโดยค่าเริ่มต้นจะฟัง 5000 โปรดดูรายละเอียดเพิ่มเติมเกี่ยวกับพารามิเตอร์การเริ่มต้นของ Fred ที่นี่
การโต้ตอบกับ Fred ทำได้โดย Web UI หรือโดยการโทร API UI เพียงแค่อนุญาตให้ผู้ใช้ส่งสายไปยังจุดสิ้นสุด API และดูผลลัพธ์
ในการเปิดเว็บอินเตอร์เฟสนำทางไปยัง http://0.0.0.0:5000/static/submit.html (ปรับพอร์ตตาม) กรอกข้อมูลในฟิลด์ที่ต้องการทั้งหมดทำงานและรอจนกว่าจะเสร็จสิ้น ดูผลลัพธ์โดยคลิกที่ลิงค์ Jobs ในส่วนหัว
หากต้องการใช้ API โปรดดู API readme เฉพาะที่นี่
เฟร็ดรอจนกว่าจะได้รับคำขอทำการเปรียบเทียบเว็บไซต์ (โพสต์โทรไปที่ /api/verify ) มันเริ่มกระบวนการรวบรวมข้อมูล เราสามารถขอดูงานทั้งหมดที่มีการโทรหา /api/viewjobs และรับสถานะของงานเฉพาะด้วยการรับ /api/results ที่ให้รหัสงานเป็นพารามิเตอร์
ดังนั้นอินพุตไปยังเฟร็ดเป็นคู่ของ URL ที่จะเปรียบเทียบ
กระบวนการเริ่มต้นด้วยเฟร็ดคลาน URL เพื่อแยกหน้าจำนวนหนึ่งเพื่อเปรียบเทียบจากนั้นแสดงผลแต่ละหน้าและถ่ายภาพหน้าจอ
เปรียบเทียบบันทึกคอนโซลและเครือข่าย
แต่ละภาพหน้าจอจะถูกวิเคราะห์ (เป็นคู่ของภาพหน้าจอพื้นฐาน/ที่อัปเดตสำหรับแต่ละความละเอียดที่ระบุ)
หากเปิดใช้งานแต่ละคู่ภาพหน้าจอจะผ่านการวิเคราะห์ ML
ผลลัพธ์จะถูกบันทึกไว้ในเครื่อง (ผู้ใช้จะต้องตรวจสอบเป็นระยะ ๆ ผ่าน API จนกว่า status จะถูกตั้งค่าให้ Done และ/หรือมีการตั้งค่า error บางอย่าง)
ผลที่ได้คือวัตถุ JSON ที่ในคีย์ report มีจำนวนคะแนน คะแนน overall_divergence คือผลรวมถ่วงน้ำหนักของเครือข่ายภาพและ ai-visual (ถ้าเปิดใช้งาน) คะแนน 0 หมายถึงการจับคู่ที่สมบูรณ์แบบ (ไม่มีความแตกต่างระหว่างพื้นฐานและการอัพเดท) ในขณะที่คะแนนที่สูงขึ้นความแตกต่างของไฮไลต์สูงสุด 100
หากจำเป็นให้ใช้อินเทอร์เฟซภาพเพื่อตรวจสอบผลลัพธ์อย่างรวดเร็ว มิฉะนั้น report ยังมีลิงก์ไปยังภาพดิบรวมถึงภาพการวิเคราะห์ที่เน้นความแตกต่างหากคุณต้องการใช้ Fred ในแบบอัตโนมัติ
เนื่องจากเฟร็ดได้รับการออกแบบให้ปรับขนาดได้จึงถูกแบ่งอย่างมีเหตุผลในสององค์ประกอบ: crawler และ ML ส่วนประกอบ crawler เป็นจุดเริ่มต้นหลักที่ผู้ใช้โต้ตอบกับ ส่วนประกอบ ML ในขณะที่เป็นรหัสเดียวกับองค์ประกอบ crawler เป็นเพียงการฟังปลายทางอื่นสำหรับการโทร API ตรรกะที่อยู่เบื้องหลังการแยกนี้คือ GPU มีราคาแพงในขณะที่ซีพียูไม่ได้ ดังนั้นเราสามารถมีตัวรวบรวมข้อมูลจำนวนมากที่จะทำการร้องขอให้ใช้อินสแตนซ์ FRED ของ GPU เพียงไม่กี่ตัว (เรียกว่าส่วนประกอบ ML ) เพื่อทำการวิเคราะห์ ML
ตัวอย่างเช่นลองนึกภาพสถานการณ์ที่เรามี 1,000 เว็บไซต์เพื่อวิเคราะห์ทุกวัน เราสร้างเครื่องเสมือน 10 เครื่องแต่ละเครื่องมี RAM 32GB และ 8 VCPUS แต่ละอินสแตนซ์จะได้รับการโทร 100 /api/verify สมมติว่าเราตั้งค่า --crawler_threads เป็น 5 ซึ่งหมายความว่าเราสามารถคลาน 5 เว็บไซต์ได้พร้อมกัน นอกจากนี้เนื่องจากเรามีเครื่อง GPU เพียงเครื่องเดียวที่มี 4 GPU เราจึงเปิดตัวอินสแตนซ์ของ Fred ซึ่งเราจะเรียกส่วนประกอบ ML ในกรณีนี้เราตั้งค่า --ai_threads เป็น 4 ซึ่งหมายความว่าเราเรียกใช้การตรวจสอบความถูกต้อง 4 มล. พร้อมกัน ตอนนี้ในแต่ละคำขอโพสต์ API ไปยังส่วนประกอบ crawler ที่เราตั้งค่า ml_address เป็นที่อยู่ของส่วนประกอบ ml สิ่งที่จะเกิดขึ้นในตอนนี้คือเมื่อใดก็ตามที่ส่วนประกอบ crawler เสร็จสิ้นในการรวบรวมข้อมูลและวิเคราะห์ (ไม่ใช่ AI) เว็บไซต์คู่จะส่งส่วนประกอบ ML ภาพหน้าจอและขอให้วิเคราะห์ ส่วนประกอบ ml จะเพิ่มคำขอนี้ในคิวและเมื่อมี GPU พร้อมใช้งานจะเรียกใช้การเปรียบเทียบ เมื่อเสร็จแล้วมันจะรายงานกลับไปยังส่วนประกอบตัว crawler ข้อมูลที่มีต้นกำเนิดโดยอัตโนมัติ โดยทั่วไปวิธีการนี้จะปรับประสิทธิภาพเชิงเส้นตรงกับจำนวนเครื่องทดสอบที่มีอยู่
Fred Runtimes แตกต่างกันอย่างมากในความซับซ้อนของเว็บไซต์ เวลาส่วนใหญ่ใช้ในส่วนประกอบตัวรวบรวมข้อมูลเนื่องจากการโหลดเว็บไซต์ (น่าเสียดาย) ไม่ใช่กระบวนการที่กำหนด บางครั้งเว็บไซต์เพียงแค่แขวนหรือป๊อปอัปจะปรากฏขึ้นแบบสุ่มหรือทรัพยากรภายนอกบางส่วนปฏิเสธที่จะโหลด ภายในเรามีวิธีการแก้ไขเพียงอย่างเดียว: try-catch ที่โหลดเว็บไซต์ใหม่หากมีสิ่งที่น่ากลัวเกิดขึ้น แต่สิ่งนี้ประกอบกับความจริงที่ว่าเรารอไม่กี่วินาทีหลังจากหน้าบอกว่ามันโหลดรวมทั้งภาพหน้าจอซ้ำเพื่อค้นหาเนื้อหาแบบไดนามิกเพิ่มเวลาในการรวบรวมข้อมูลอย่างมาก
ส่วนที่รวบรวมข้อมูลมักจะใช้เวลา 2-10 นาทีขึ้นอยู่กับจำนวนหน้าคลาน
การวิเคราะห์ด้วยภาพ (โดยแต่ละภาพหน้าจอ จำกัด ที่ 20 ล้านพิกเซล) ใช้เวลาประมาณ 5-10 วินาทีต่อคู่ภาพ ความละเอียดพิเศษแต่ละชุดหมายถึงคู่ของภาพคู่อื่น
การวิเคราะห์ด้วยภาพ AI (ML) ใช้เวลา 0-30 วินาทีต่อภาพคู่ บน GPU GPU ใด ๆ จะทำแม้กระทั่ง K80 เก่าจะทำงานได้อย่างรวดเร็วเนื่องจาก ML PAR เป็น U-NET (ชั้น convolutional ซ้อน) คุณสามารถทำงานบน CPU ได้ตลอดเวลา แต่แทนที่จะเป็น 30 วินาทีต่อคู่ภาพคุณอาจรอ 5 นาทีต่อภาพคู่
โดยรวมแล้วกฎง่ายๆสำหรับการรวบรวมข้อมูลที่เปิดใช้งาน ML เริ่มต้นจนจบคือ 1 นาทีหรือน้อยกว่าต่อหน้า