ทำให้ข้อมูลของคุณเป็นรูปเป็นร่างสำหรับ แมชชีนเลิร์นนิง

แมชชีนเลิร์นนิง การจัดการข้อมูลเป็นส่วนสำคัญ ของกิจวัตรประจำวันของโปรแกรมเมอร์ โดยทั่วไป ข้อมูลจะถูกจัดระเบียบเป็นอาร์เรย์และอ็อบเจกต์ จัดเก็บภายนอกใน SQL หรือฐานข้อมูลแบบเอกสาร หรือเข้ารหัสเป็นข้อความหรือไฟล์ไบนารี แมชชีนเลิร์นนิงนั้นเกี่ยวกับข้อมูลและทำงานได้ดีที่สุดเมื่อใช้ข้อมูลจำนวนมาก ดังนั้น ข้อมูลและการประมวลผลข้อมูลจึงมีบทบาทสำคัญในการออกแบบ และสร้างไปป์ไลน์การเรียนรู้ของเครื่อง อย่างไรก็ตาม รูปแบบข้อมูลมักจะแตกต่าง จากคลาสและออบเจกต์อย่างมาก และมีการใช้คำศัพท์อย่างเช่น เวกเตอร์ เมทริกซ์ และเทนเซอร์ ในบทความนี้ เราจะอธิบายว่าเหตุใดแมชชีนเลิร์นนิงจึงต้องการไปป์ไลน์ข้อมูลและรูปแบบข้อมูล ที่มีประสิทธิภาพ เราอธิบายโครงสร้างข้อมูลพื้นฐานตั้งแต่สเกลาร์ไปจนถึงเทนเซอร์ n มิติ และยกตัวอย่างการประมวลผลข้อมูลประเภทต่างๆ

เหตุใดโครงสร้างข้อมูลจึงแตกต่างกันใน ML

เมื่อเราพูดถึงข้อมูล สำหรับแมชชีนเลิร์นนิง เราหมายถึงข้อมูลการฝึกอบรม ที่ใช้ในการสร้างและทดสอบโมเดล เป้าหมายการออกแบบ สำหรับโครงสร้างข้อมูล แมชชีนเลิร์นนิงนั้นแตกต่างจาก การเขียนโปรแกรมแบบดั้งเดิม บ่อยครั้งที่ข้อมูลดิบประกอบด้วย ข้อมูลแบบตาราง รูปภาพหรือวิดีโอ ข้อความหรือเสียงที่จัดเก็บไว้ในดิสก์ภายในเครื่อง หรือในที่เก็บข้อมูลบนคลาวด์ เฟรมเวิร์กแมชชีน เลิร์นนิงไม่สามารถใช้ข้อมูลนี้ได้โดยตรง เนื่องจากมักถูกเข้ารหัส (เช่น เป็น JPG หรือ MP4) มีข้อมูลเพิ่มเติมและไม่สามารถประมวลผลได้อย่างมีประสิทธิภาพ ประสิทธิภาพมีความสำคัญอย่างมากในแมชชีนเลิร์นนิง และข้อมูลการฝึกอบรมจะถูกอนุมานเป็นร้อยเป็นพันครั้งโดยแบบจำลองในระหว่างการฝึกอบรม แอปพลิเคชันแมชชีนเลิร์นนิงได้รับการฝึกฝนและใช้งานโดย GPU (หลายตัว) ที่ซิงโครไนซ์ข้อมูลผ่านเครือข่ายและไพพ์ภายในที่มีประสิทธิภาพสูง

เป้าหมายการออกแบบสำหรับโครงสร้างข้อมูล ML

  • เหมาะสำหรับการประมวลผลและการคำนวณที่มีประสิทธิภาพสูง
  • การซิงโครไนซ์ที่มีประสิทธิภาพระหว่าง GPU และเครื่องต่างๆ
  • ยืดหยุ่นสำหรับข้อมูลประเภทต่างๆ

โชคดีที่งานที่ซับซ้อนส่วนใหญ่ได้รับการจัดการโดยเฟรมเวิร์กแมชชีนเลิร์นนิง เช่น Tensorflow หรือ PyTorch อย่างไรก็ตาม สิ่งสำคัญคือต้องเข้าใจพื้นฐานต่อไปนี้เพื่อออกแบบไปป์ไลน์ข้อมูลที่มีประสิทธิภาพ

สเกลาร์ เวกเตอร์ และเมทริกซ์

ในรูปแบบข้อมูลที่ยืดหยุ่นของเรา เราเริ่มต้นอย่างเรียบง่ายที่สุดเท่าที่จะเป็นไปได้ ด้วยองค์ประกอบเดียว: สเกลาร์ สเกลาร์หมายถึงจุดข้อมูลเดียว ตัวอย่างเช่น ปริมาณของสีน้ำเงินในพิกเซล RGB หรือการแทนโทเค็นสำหรับตัวอักษรหรือคำ ในภาษาการเขียนโปรแกรม เช่น Java หรือ Python สเกลาร์คือจำนวนเต็มเดี่ยว จำนวนเต็ม หรือบูลีน

เมื่อสร้างรายการจากสเกลาร์และรายการมีลำดับคงที่ (กำกับ) จะเรียกว่าเวกเตอร์ เวกเตอร์เป็นเรื่องปกติมากในการเขียนโปรแกรมแบบคลาสสิกและมักใช้เป็นทูเพิล อาร์เรย์ หรือรายการ ด้วยเวกเตอร์ เราสามารถแสดงพิกเซล RGB ที่สมบูรณ์ (ค่าสำหรับสีแดง สีเขียว และสีน้ำเงิน) หรือประโยค (แต่ละคำหรือบางส่วนของคำจะแสดงด้วยโทเค็นจำนวนเต็ม)

ในขั้นตอนถัดไป เราจะเพิ่มมิติที่สองโดยการซ้อนเวกเตอร์หลายตัวเข้ากับเมทริกซ์ เมทริกซ์เป็นแบบสองมิติและเทียบได้กับตาราง ซึ่งประกอบด้วยแถวและคอลัมน์ จากวิธีนี้ เราสามารถจัดเก็บรูปภาพระดับสีเทา เอกสารข้อความหลายฉบับ หรือไฟล์เสียงที่มีหลายช่องสัญญาณได้อย่างมีประสิทธิภาพ

เมทริกซ์การประมวลผลบน GPU นั้นมีประสิทธิภาพอย่างมาก และคณิตศาสตร์ที่อยู่เบื้องหลังการคำนวณเมทริกซ์นั้นได้รับการวิจัยมาเป็นอย่างดี (แม้ว่าจะเพิ่งค้นพบอัลกอริธึมการคูณที่มีประสิทธิภาพมากขึ้น เมื่อไม่นานมานี้ ) เมทริกซ์เป็นรากฐานสำหรับโครงสร้างข้อมูลในแมชชีนเลิร์นนิงสมัยใหม่ แมชชีนเลิร์นนิง

เทนเซอร์และคุณสมบัติของมัน

เทนเซอร์อธิบายอาร์เรย์ข้อมูลแบบ n มิติ บ่อยครั้งที่ อันดับที่เรียกว่าหรือจำนวนแกนหมายถึงมิติข้อมูล เทนเซอร์อันดับ 0 คือสเกลาร์ เทนเซอร์อันดับ 1 คือเวกเตอร์ และเมทริกซ์หมายถึงเทนเซอร์อันดับ 2

เทนเซอร์ N-มิติเหมาะอย่างยิ่งสำหรับแอปพลิเคชันการเรียนรู้ของเครื่องเนื่องจากช่วยให้เข้าถึงข้อมูลได้อย่างรวดเร็วโดยการค้นหาอย่างรวดเร็วและไม่ต้องถอดรหัสหรือประมวลผลเพิ่มเติม เนื่องจากคณิตศาสตร์เมทริกซ์ที่รู้จักกันดีการคำนวณด้วยเทนเซอร์จึงมีประสิทธิภาพมาก และช่วยให้สามารถฝึกฝนโมเดลการเรียนรู้เชิงลึกที่ต้องใช้การคำนวณพารามิเตอร์นับล้านและพันล้านพารามิเตอร์ การดำเนินการของเทนเซอร์หลายอย่าง เช่น การบวก การลบ การแปลง Hadamard , dot productและอื่นๆ อีกมากมายได้รับการนำไปใช้อย่างมีประสิทธิภาพในไลบรารีการเรียนรู้ของเครื่องมาตรฐาน

การจัดเก็บข้อมูลในรูปแบบเทนเซอร์มาพร้อมกับการแลกเปลี่ยนเวลา/หน่วยความจำที่โดดเด่น ซึ่งไม่ใช่เรื่องแปลกในวิทยาการคอมพิวเตอร์ การจัดเก็บข้อมูลที่เข้ารหัสและบีบอัดจะลดพื้นที่ดิสก์ที่ต้องการให้เหลือน้อยที่สุด ในการเข้าถึงข้อมูล จะต้องถอดรหัสและขยายขนาด ซึ่งต้องใช้ความพยายามในการคำนวณ สำหรับไฟล์เดียว ส่วนใหญ่จะไม่เกี่ยวข้อง และข้อดีของการถ่ายโอนที่รวดเร็วและความต้องการพื้นที่เก็บข้อมูลต่ำนั้นมีค่ามากกว่าเวลาในการเข้าถึง อย่างไรก็ตาม เมื่อฝึกโมเดลการเรียนรู้เชิงลึก ข้อมูลจะถูกเข้าถึงบ่อยครั้ง และอัลกอริทึมพื้นฐานสำหรับโมเดลแมชชีนเลิร์นนิง (เช่น การบิดเบี้ยวสำหรับการวิเคราะห์ภาพ) จะไม่สามารถทำงานกับข้อมูลที่เข้ารหัสได้

รูปภาพ JPG ขนาด 320 x 213 พิกเซลที่เข้ารหัสอย่างดีต้องการพื้นที่จัดเก็บประมาณ 13 KB เท่านั้น ในขณะที่โฟลต32 เทนเซอร์ของข้อมูลรูปภาพเดียวกันใช้หน่วยความจำประมาณ 798 KB ซึ่งเพิ่มขึ้น 6100%

พิกเซลสี 320 x 213 ใน JPG ต้องการพื้นที่เก็บข้อมูลเพียง 13 KB

ข้อมูลภาพเดียวกันที่จัดเก็บไว้ในเทนเซอร์ขนาด 320 x 213 x 3 float32 น้ำหนัก 798 KB

เพื่อรวมข้อดีของทั้งสองอย่างเข้า ด้วยกัน โมดูลตัวโหลดข้อมูลพิเศษได้รับการออกแบบเพื่อประมวลผลข้อมูลล่วงหน้าสำหรับการใช้งานที่เหมาะสมที่สุดในรูปแบบเทนเซอร์

มีการเพิ่มประสิทธิภาพเพิ่มเติม เช่น การจัดกลุ่มและรูปแบบข้อมูลกระจัดกระจาย เพื่อจัดการกับข้อมูลจำนวนมาก อย่างไรก็ตาม ความต้องการด้านฮาร์ดแวร์สำหรับ (การฝึกอบรม) โมเดลการเรียนรู้เชิงลึกยังคงอยู่ในระดับสูง

การตัดสินใจสำหรับไปป์ไลน์ข้อมูลของคุณ

โดยคำนึงถึงข้อมูลเชิงลึกข้างต้นเกี่ยวกับโครงสร้างข้อมูลเฉพาะ มาดูการตัดสินใจที่ต้องทำเมื่อออกแบบไปป์ไลน์ข้อมูล

ก่อนอื่น แม้กระทั่งก่อนที่จะเริ่มพัฒนาโมเดลแมชชีนเลิร์นนิง ตรวจสอบให้แน่ใจว่าได้จัดเก็บข้อมูลที่เกี่ยวข้องอย่างมีโครงสร้างและเข้าถึงได้. สำหรับข้อมูลรูปภาพ มักหมายถึงพื้นที่เก็บข้อมูลบนคลาวด์บางส่วนที่มีข้อมูลเมตาเพิ่มเติมแนบมากับไฟล์หรือจัดเก็บไว้ในฐานข้อมูลแยกต่างหาก สำหรับตัวโหลดข้อมูลของเรา สิ่งสำคัญคือต้องมีรายการโครงสร้างของไฟล์ที่เกี่ยวข้องและป้ายกำกับที่แนบมา ข้อมูลเมตานี้จะใช้ในการดาวน์โหลดและประมวลผลไฟล์ล่วงหน้า โปรดทราบว่า ณ จุดหนึ่งอาจมีเครื่องหลายเครื่องที่ทำงานบนชุดข้อมูลเดียวกันแบบขนาน ดังนั้นเครื่องทั้งหมดจึงจำเป็นต้องเข้าถึงแบบขนาน สำหรับขั้นตอนการฝึกอบรม เราต้องการแคชข้อมูลบนเครื่องฝึกอบรมโดยตรงเพื่อหลีกเลี่ยงเวลาและค่าใช้จ่ายสูงในการทำธุรกรรม เนื่องจากเราเข้าถึงข้อมูลบ่อยครั้ง แม้ว่าคุณจะไม่ได้วางแผนที่จะฝึกโมเดลแมชชีนเลิร์นนิง (แต่ตอนนี้) ก็อาจคุ้มค่าที่จะคิดถึงการจัดเก็บข้อมูลที่เกี่ยวข้องและป้ายกำกับที่อาจเป็นประโยชน์สำหรับการเรียนรู้ภายใต้การดูแลในภายหลัง

ในขั้นตอนถัดไป เราจะแปลงข้อมูลเป็นรูปแบบเทนเซอร์ที่มีประโยชน์ อันดับเทนเซอร์ขึ้นอยู่กับชนิดข้อมูลที่ใช้ (ดูตัวอย่างในสมุดงาน ) และที่น่าประหลาดใจกว่านั้นคือขึ้นอยู่กับคำจำกัดความของปัญหา สิ่งสำคัญคือต้องกำหนดว่าโมเดลควรตีความข้อมูล (เช่น ประโยค) โดยเป็นอิสระจากส่วนอื่นๆ หรือส่วนใดของข้อมูลที่เกี่ยวข้องกัน ชุดงานมักจะประกอบด้วยตัวอย่างอิสระจำนวนหนึ่ง ขนาดแบทช์มีความยืดหยุ่นและสามารถลดให้เหลือเพียงตัวอย่างเดียวในเวลาอนุมาน/ทดสอบ ประเภทของเทนเซอร์ยังขึ้นอยู่กับประเภทข้อมูลและวิธีการทำให้เป็นมาตรฐาน (พิกเซลสามารถแสดงเป็นจำนวนเต็มตั้งแต่ 0 ถึง 255 หรือเป็นตัวเลขลอยตัวตั้งแต่ 0 ถึง 1)

สำหรับปัญหาเล็กๆ น้อยๆ อาจเป็นไปได้ที่จะโหลดชุดข้อมูลทั้งหมดลงในหน่วยความจำ (รูปแบบเทนเซอร์) และดำเนินการฝึกอบรมกับแหล่งข้อมูลนี้โดยใช้ประโยชน์จากการโหลดข้อมูลที่เร็วขึ้นระหว่างการฝึกและการโหลด CPU ต่ำ อย่างไรก็ตาม สำหรับปัญหาในทางปฏิบัติส่วนใหญ่ สิ่งนี้แทบจะเป็นไปไม่ได้เลย เนื่องจากชุดข้อมูลมาตรฐานมีขนาดเกินกว่าหลายร้อยกิกะไบต์ได้อย่างง่ายดาย สำหรับกรณีดังกล่าว ตัวโหลดข้อมูลแบบอะซิงโครนัสสามารถทำงานเป็นเธรดบน CPUและเตรียมข้อมูลในหน่วยความจำ นี่เป็นกระบวนการที่ต่อเนื่อง ดังนั้นจึงทำงานได้แม้ว่าจำนวนหน่วยความจำทั้งหมดจะน้อยกว่าชุดข้อมูลทั้งหมด

การตัดสินใจชุดข้อมูล:

  • รูปแบบที่มีโครงสร้าง
  • ที่เก็บข้อมูลที่สามารถเข้าถึงได้
  • ป้ายชื่อและข้อมูลเมตา
  • รูปแบบเทนเซอร์ (อันดับ, ขนาดแบทช์, ประเภท, การทำให้เป็นมาตรฐาน)
  • การโหลดข้อมูลจากดิสก์ไปยังหน่วยความจำ การขนาน

สเกลาร์ เวกเตอร์ เมทริกซ์ และโดยเฉพาะอย่างยิ่งเทนเซอร์เป็นองค์ประกอบพื้นฐานของชุดข้อมูลแมชชีนเลิร์นนิง การฝึกอบรมแบบจำลองเริ่มต้นด้วยการสร้างชุดข้อมูลที่เกี่ยวข้องและไปป์ไลน์การประมวลผลข้อมูล บทความนี้แสดงภาพรวมของโครงสร้างข้อมูลที่ปรับให้เหมาะสม และอธิบายแง่มุมที่เกี่ยวข้องบางประการของรูปแบบเทนเซอร์ หวังว่าการตัดสินใจที่กล่าวถึงในการออกแบบไปป์ไลน์ข้อมูลสามารถใช้เป็นจุดเริ่มต้นสำหรับข้อมูลเชิงลึกที่ละเอียดยิ่งขึ้นในหัวข้อการประมวลผลข้อมูลในแมชชีนเลิร์นนิง

Face-sso (By K&O) หากท่านสนใจ เครื่องสแกนใบหน้ารุ่นต่างๆ หลากหลายรุ่น หรือ ติดตั้งระบบสแกนใบหน้า สามารถติดต่อสอบถามได้โดยตรง เรามีแอดมินคอยคอบคำถาม 24 ชั้วโมงที่ Line OA เครื่องสแกนใบหน้า สามารถ ขอราคาพิเศษได้ ตามงบประมาณที่เหมาะสม สอบถามได้สบายใจทั้ง เรื่องค่าบริการ ราคา และ งบประมาณ มั่นใจเพราะเป็นราคาที่สุด คุ้มค่าที่สุด

หากท่านมีความสนใจ บทความ หรือ Technology สามารถติดต่อได้ตามเบอร์ที่ให้ไว้ด้านล่างนี้
Tel.086-594-5494
Tel.095-919-6699

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *