36 คะแนน โดย xguru 2024-06-10 | 4 ความคิดเห็น | แชร์ทาง WhatsApp
  • สรุปความคิดเห็นจากผู้ที่เข้ามาตอบคำถาม

schmookeeg

  • สิ่งที่ชอบที่สุดในการทำงานเป็นวิศวกรแมชชีนเลิร์นนิงตอนนี้ คือการได้ทำงานร่วมกับคนที่ไม่มีพื้นฐานทางเทคนิค
    • แม้แต่คนที่เปิด MS Outlook ไม่ได้เกิน 3 ครั้งจาก 5 ครั้ง ก็ยังมีความลึกและมุมมองที่น่าทึ่งในสาขาความเชี่ยวชาญของตัวเอง
    • ทำให้เราถ่อมตัวมาก
  • คนที่ไม่มีพื้นฐานทางเทคนิคมองฉันเหมือนพ่อมด ส่วนฉันก็มองพวกเขาเหมือนหมอผีวูดู
    • ตอนที่เราฝึกสิ่งที่เราสนใจและใช้มันทำนายผล มันให้ความรู้สึกคุ้มค่ามากสำหรับทั้งสองฝ่าย
  • งานโมเดลส่วนใหญ่เกี่ยวข้องกับด้านการแพทย์
    • ดึงอินไซต์จาก data lake ขนาดมหาศาล เช่น ข้อมูลเคลม ใบสั่งยา ความเห็นแพทย์ สัญญาณชีพ ภาพวินิจฉัย ฯลฯ
    • การที่เข้าถึงข้อมูลเหล่านี้ได้ง่ายมากก็เป็นเรื่องใหญ่มากเช่นกัน (ไม่นับเรื่อง HIPAA)
  • ความเป็นจริงด้านเวลา
    • มีประชุมประมาณ 3 ชั่วโมงต่อสัปดาห์
    • ใช้เวลาอีกราว 3 ชั่วโมงกับการเตรียมงาน แก้ปัญหา ETL และรันคิวรีแบบครั้งคราวให้ฝั่งธุรกิจ
    • เวลาที่เหลือใช้ไปกับการสำรวจข้อมูลเพื่อหาความได้เปรียบเล็กน้อยในการทำนายรายได้ระดับหลายล้านดอลลาร์
      • มันเหมือนเล่นหา Wally ด้วยคณิตศาสตร์
      • และฉากหา Wally นั้นมีขนาดประมาณ 50TB :D

burnedout_dc4e3

  • ทำแมชชีนเลิร์นนิงมาตั้งแต่ช่วงกลางทศวรรษ 2000
  • ครึ่งหนึ่งของเวลาใช้ไปกับการดูแลให้ “data pipeline ทำงานต่อไปได้” เพื่อเตรียมข้อมูลสำหรับฝึกและใช้งานโมเดล
  • อีกครึ่งหนึ่งใช้ไปกับการซัพพอร์ตทางเทคนิคให้ “นักวิทยาศาสตร์ AI” ที่แทบไม่มีทักษะการเขียนโค้ด
    • พวกเขาใช้เวลาไปกับการคัดลอก/วางเนื้อหาลงในบริการแชตบอตต่าง ๆ
      • งานหลักคือสอนวิธีติดตั้งแพ็กเกจ Python และวิธีใช้ Git
    • ไม่มีแผนว่าผลงานของพวกเขาจะนำไปใช้กับโปรเจกต์ที่เรากำลังทำอย่างไร
      • แต่กลับยืนยันว่าโมเดลทรานส์ฟอร์เมอร์จะแก้ปัญหาการประมวลผลข้อมูลทั้งหมดของเราได้
  • กำลังคิดว่าจะลาออกโดยยังไม่หางานใหม่ จนกว่าวงจร hype นี้จะจบลง

tambourineman88

  • ความจริงที่ตรงข้ามกับสิ่งที่คาดไว้ตอนเรียนแมชชีนเลิร์นนิง
    • 95% ของงานนี้คือการทำความสะอาดข้อมูล การรวมชุดข้อมูล และ feature engineering
    • การฟิตโมเดลและทดสอบมีแค่ 5% เท่านั้น
  • คำตอบต่อโพสต์นี้ #1
    • เป็นแบบนี้มาตั้งแต่แรกจนถึงตอนนี้ และจะเป็นต่อไป อาเมน
    • ประเด็นสำคัญในระดับ staff/lead
      • สิ่งสำคัญคือการรักษา “data impedance” ระหว่างฟีเจอร์ของผลิตภัณฑ์ที่พึ่งพาโมเดล inference กับการเก็บข้อมูล
      • เพื่อให้มั่นใจว่าแม้ผลิตภัณฑ์หรือฟีเจอร์จะเปลี่ยนไป ระบบวัดผลและความละเอียดของข้อมูลที่ป้อนเข้าสู่ data store และ training corpus จะไม่พัง
    • ประเด็นสำคัญในโจทย์ reinforcement learning (RL)
      • ต้องแน่ใจว่ามีการเก็บตัวแปรที่ถูกต้องสำหรับ state-action space tuple
      • จากนั้นคือต้องหาวิธีปรับอินเทอร์เฟซหรือ environment model เพื่อรับ feedback ของรางวัล

davedx

  • รัน pip install pytorch
  • environment พัง
  • ใช้เวลา 4 ชั่วโมงแก้ Python environment
  • รัน pip install Pillow
  • เจอ error ว่าไม่รองรับกับสถาปัตยกรรม CPU ของ MacBook
  • ลบทุกอย่างที่เกี่ยวกับ Python แล้วติดตั้งใหม่ตั้งแต่ต้น เสียเวลาอีก 4 ชั่วโมง
  • กำลังจะรัน pip install ... แต่ได้เวลาเลิกงานพอดี!

Xenoamorphous

  • เป็นนักพัฒนาซอฟต์แวร์ทั่วไป แต่จำเป็นต้องทำงาน ML
  • สงสัยว่าผู้เชี่ยวชาญ ML “ตัวจริง” จัดการกับผลลัพธ์แบบความน่าจะเป็น/gradient descent และความคาดหวังของผู้คนอย่างไร
  • ในงานซอฟต์แวร์ทั่วไป มันทำงานหรือไม่ทำงาน และถ้าไม่ทำงานก็มักอธิบายสาเหตุและหวังว่าจะแก้ได้
  • แต่ใน ML จะถูกถามว่า “ทำไม text classifier นี้ถึงจัดประเภทข้อความนี้ไม่ถูกต้อง?”
    • ซึ่งตอบได้แค่ว่า “มันขาดอีก 0.004 คะแนนถึง threshold” หรือ “เพราะการเลือกใช้คำหรือเรียงคำแบบนี้เลยไม่ผ่าน”
    • ดูเหมือนว่าจะทำให้ทุกฝ่ายไม่พอใจ

angarg12

  • ตำแหน่งคือวิศวกร ML แต่ในทางปฏิบัติงานเกือบจะเป็นซอฟต์แวร์เอนจิเนียริงล้วน ๆ
  • งานหลักคือสร้างระบบที่รองรับระบบ ML ใน production
    • อย่างที่หลายคนพูดไว้ ส่วนใหญ่คือ data transformation, model training และ model serving
  • งานยังรวมถึงการสร้างเครื่องมือหรือปรับระบบเดิมเพื่อช่วยให้นักวิทยาศาสตร์ทำงานได้
  • แต่เมื่อมองออกไปภายนอก ดูเหมือนบริษัทของผู้เขียนจะค่อนข้างผิดจากปกติ
  • ในอุตสาหกรรม ความคาดหวังต่อวิศวกร ML ดูจะสอดคล้องกับงานของ data/appied scientist มากกว่า (เช่น สร้างและทดสอบโมเดล)
    • ทำให้เกิดความกำกวมอย่างมากต่อความคาดหวังในแต่ละบทบาทของแต่ละบริษัท

runban

  • ภารโรงเงินเดือนสูง
    • ถ้าข้อมูลสกปรก ก็ไม่มีทางได้ผลลัพธ์ที่ดี
    • และงานนี้เหมาะกับ Perl มากกว่า Python เยอะ
  • ช่างแก้ปัญหาเมนบอร์ดเงินเดือนสูง
    • ต่อให้ใช้ระบบระบายความร้อนด้วยน้ำ H100 ก็ยังร้อนมากจริง ๆ
    • เพราะไม่มีคนดูแลฮาร์ดแวร์โดยเฉพาะ
  • ต่อสู้กับ dependency ของบุคคลที่สามที่เอาแน่เอานอนไม่ได้ เหมือนทุกคน

primaprashant

  • ทำงานเป็น MLE มา 5 ปี และอย่างที่คอมเมนต์อื่นพูดไว้ งานส่วนใหญ่คล้าย SWE
  • งานประจำวันจะแตกต่างกันไปตามช่วงของโปรเจกต์ แต่โดยทั่วไปจะอยู่ในอย่างใดอย่างหนึ่งต่อไปนี้:
    • ทำงานร่วมกับผู้มีส่วนได้ส่วนเสียและ TPM เพื่อพัฒนาสมมติฐานในการแก้ปัญหาธุรกิจที่มีลำดับความสำคัญสูงผ่านการวิเคราะห์ข้อมูล
    • วางกรอบปัญหาธุรกิจให้เป็นปัญหา ML และสร้างเมตริกที่เหมาะกับทั้งโมเดล ML และโจทย์ธุรกิจ
    • สร้าง PoC และต้นแบบเพื่อยืนยันความเป็นไปได้ทางเทคนิคของฟีเจอร์และไอเดียใหม่
    • เขียนเอกสารออกแบบสำหรับสถาปัตยกรรมและการตัดสินใจเชิงเทคนิค
    • ทำงานกับทีมแพลตฟอร์มเพื่อตั้งค่าและดูแล data pipeline ตามความต้องการของทั้งโปรเจกต์ ML ใหม่และเดิม
    • สร้าง ดีพลอย และบำรุงรักษา ML microservice สำหรับ inference
    • รัน A/B test และเขียนเอกสารออกแบบสำหรับการวิเคราะห์หลังการทดสอบ
    • ตั้งค่า pipeline สำหรับ retraining โมเดล ML

jackspawn

  • ใช้เวลากว่า 50% ไปกับ backend engineering
    • เพราะ ML ถูกใช้อยู่ภายใน API ที่ใหญ่กว่า
  • รับผิดชอบประสบการณ์แบบ end-to-end ของ API นั้น
    • ดังนั้นจึงทำอะไรก็ตามที่ให้ความคุ้มค่าสูงสุดต่อเวลา
    • ซึ่งบ่อยครั้งก็ไม่ได้เกี่ยวอะไรกับโมเดล ML เลย

mardifoufs

  • ทำงานด้านการปรับแต่งโค้ด inference และ “ทำให้โมเดลที่ฝึกแล้วกลายเป็นผลิตภัณฑ์”
  • ตอนนี้ทำงานในอุตสาหกรรมที่บริการคลาวด์ยังไม่เป็นที่ใช้กันทั่วไป จึงต้องฝึกและทำ inference แบบ local
    • เพราะไม่ใช่ LLM จึงไม่มีเครื่องมือสำเร็จรูปมากนัก เลยยิ่งน่าสนใจ
    • หลายอย่างต้องสร้างเอง
  • ทำตั้งแต่ประเมินคุณภาพข้อมูล (ส่วนที่เป็น local นี่ท้าทาย) ไปจนถึงใช้ CUDA โดยตรง
    • เพราะมีไลบรารีประมวลผลสัญญาณที่สร้างบน CUDA อยู่แล้วและสามารถนำมาใช้ได้
  • บางครั้งก็รวมถึงการสร้างเครื่องมือภายในทีมด้วย (ทีมผสมระหว่างนักวิจัย/MLE)
    • เพราะเป็นโดเมนเฉพาะทางมาก จึงต้องสร้างเองเพื่อทำ visualization ของข้อมูลและ inference
  • มีอิสระเต็มที่ในเรื่องการเลือกเครื่องมือและการออกแบบซอฟต์แวร์ภายใน ทำให้สร้างอิทธิพลต่อองค์กรได้มาก
  • เครื่องมือที่ต่อขึ้นมาแบบเฉพาะหน้าอันหนึ่ง ตอนนี้กำลังจะถูกนำไปใส่ในผลิตภัณฑ์หลักด้วย

hirako2000

  • แม้จะไม่ใช่งานหลัก แต่ใช้เวลาส่วนใหญ่ไปกับการ “เอาของต่าง ๆ มาต่อกัน”
    • ปรับแต่งโอเพนซอร์สที่มีอยู่
    • หาวิธี optimize ทรัพยากร
    • retrain โมเดลบนชุดข้อมูลอื่น
    • พยายามรันโค้ด Python ที่เขียนแบบลวก ๆ
    • เพิ่มไฟล์ requirements ที่หายไป
    • ทำความสะอาดข้อมูล
  • คิดว่าอะไรคือสิ่งที่ ML สามารถแก้ได้อย่างมีประโยชน์จริง ๆ ซึ่งยังไม่ถูกทำไปตั้งแต่หลายปีก่อน
  • เช็กราคา GPU ล่าสุด แล้วคำนวณว่าคุ้มไหมที่จะซื้อ GPU แทนการเช่าเวลาราคาแพงจากผู้ให้บริการโฮสต์
  • อ่านเปเปอร์จนปวดหัว
    • ใช้เวลาอ่านบทคัดย่อและไล่ดูไดอะแกรมไม่กี่รูปตรงกลาง

tenache

  • เรียนด้านแมชชีนเลิร์นนิงมาและเดิมก็ถูกจ้างมาสำหรับบทบาทนั้น แต่บริษัทเปลี่ยนทิศทาง ทำให้ตอนนี้ทำงานกับ LLM
  • ใช้เวลาส่วนใหญ่กับงานอย่างเช่น:
    • ทำความเข้าใจว่า LLM ต่าง ๆ ทำงานอย่างไร
    • หา parameter ที่ดีที่สุด
    • ทำ RAG(Retrieval-Augmented Generation) อย่างไร
    • จะเชื่อมต่อกับบอตอื่นอย่างไร

trybackprop

  • โดยทั่วไปในหนึ่งสัปดาห์จะทำงานประมาณนี้:
  • 15%: ประชุมคุยเชิงเทคนิคหรือประชุม 1:1
    • โดยทั่วไปคุยเรื่องไอเดีย แผนของโมเดล หรือการซัพพอร์ตผลิตภัณฑ์ ML
  • 40%: งานพัฒนา ML
    • ในช่วงต้นของโปรเจกต์ จะทำความเข้าใจความต้องการของผลิตภัณฑ์
    • คุยกับทีมว่าโมเดลหรืออัลกอริทึม ML แบบไหนจะช่วยให้บรรลุเป้าหมายด้านผลิตภัณฑ์/ธุรกิจได้
    • รวบรวมชุดข้อมูลที่มีอยู่จากนักวิเคราะห์และนักวิทยาศาสตร์ข้อมูล
    • สร้าง pipeline เพื่อใช้ชุดข้อมูลเหล่านี้สร้างชุดข้อมูลสำหรับฝึกและตรวจสอบความถูกต้อง
    • ระหว่างรอให้ชุดข้อมูลฝึก/ตรวจสอบถูกเติมเต็ม (อาจใช้เวลาถึง 2 สัปดาห์) ก็จะทำโปรเจกต์อื่นที่อยู่ในเฟสพัฒนาต้นกว่าหรือไกลกว่าไปพร้อมกัน
    • ทำงานกับโมเดลใหม่ (เขียนด้วย PyTorch) และทดสอบกับข้อมูลจำนวนน้อยเพื่อประเมินประสิทธิภาพแบบออฟไลน์ และดูว่ามันทำงานตามที่คาดหรือไม่
    • ทำการทดสอบด้วยมือบางอย่าง โดยใช้โมเดลช่วยเติมข้อมูลผลิตภัณฑ์ เพื่อเช็ก sanity ของโมเดล (หากไม่มีการทดลองขนาดใหญ่ ก็ทำได้แค่อาศัยสัญชาตญาณของตัวเองและเพื่อนร่วมทีม)
    • เมื่อชุดข้อมูลฝึก/ตรวจสอบพร้อมแล้ว ก็ฝึกโมเดลกับข้อมูลจำนวนมาก ตรวจผลแบบออฟไลน์ และถ้ามีปัญหาก็ปรับโมเดลหรือเปลี่ยนสถาปัตยกรรม
    • ถ้าผลออฟไลน์ดีหรือดูดี ก็จะดีพลอยโมเดลขึ้น production เพื่อทำการทดลอง
    • ขณะเดียวกันอาจต้องแก้โค้ดฝั่งผลิตภัณฑ์/อินฟราฯ เพื่อรองรับการทดสอบโมเดลใหม่ที่สร้างขึ้น
    • รันการทดลองและค่อย ๆ เพิ่มทราฟฟิกจนถึงระดับ 1-5% แล้วปล่อยให้รันต่อหลายสัปดาห์หรือเป็นเดือน
    • ระหว่างนั้นก็ติดตามผล และมอนิเตอร์ pipeline ที่เกี่ยวข้องทั้งหมดเพื่อให้แน่ใจว่าโมเดลถูกฝึกอย่างเหมาะสม และผลการทดลองไม่ถูกบิดเบือนจากปัจจัยด้านอินฟราฯ บั๊ก หรือผลิตภัณฑ์ที่ไม่คาดคิด
    • ถ้าผลลัพธ์ดูเป็นไปตามคาดและสอดคล้องกับสมมติฐานตั้งต้น ก็จะคุยกับทีมว่าจะปล่อยจริงหรือไม่ และถ้าตัดสินใจปล่อย ก็ปล่อยเลย!
      • (หมายเหตุ: การพัฒนาโมเดลรวมถึงการเขียนฟีเจอร์ การเตรียมชุดข้อมูล การวิเคราะห์ การสร้างโมเดล ML เอง และการเปลี่ยนโค้ดฝั่งผลิตภัณฑ์/อินฟราฯ)
  • 20%: การบำรุงรักษา
    • การพัฒนาโมเดลใหม่ไม่ได้แปลว่าจะละเลยโมเดลเดิม
    • มีการตรวจเช็กทุกวันเพื่อดูว่าประสิทธิภาพตกลงหรือเปลี่ยนไปอย่างไม่คาดคิดหรือไม่
    • รวมถึงปรับแก้ pipeline และทำให้มีประสิทธิภาพมากขึ้น
  • 15%: อ่านเปเปอร์วิจัยและเรียนรู้เทคนิคใหม่
    • โลก AI/ML เปลี่ยนเร็วมาก จึงต้องอ่านงานวิจัยใหม่ ๆ อย่างต่อเนื่องและทดลองเทคนิคใหม่ที่บ้านเพื่อให้ทันสมัย
    • เพราะสนุกจึงไม่รู้สึกว่าเป็นภาระ
    • ไม่ได้มองว่านี่คือ “งาน” เพื่อให้ตามทัน
  • 10%: งานวิจัยภายใน
    • ใช้เวลานี้เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับผลิตภัณฑ์อื่นในทีมหรือในบริษัท และดูว่าทีมเราจะช่วยอะไรได้บ้าง หรือจะยืมเทคนิค/วิธีการอะไรจากพวกเขาได้บ้าง
    • รวมถึงใช้เวลานี้เขียนอินไซต์ที่ได้จากการทบทวนงานในช่วง 6 เดือน/1 ปีที่ผ่านมา

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

 
ohyecloudy 2024-06-17

สำนวนที่ว่า 'คนที่ไม่มีพื้นฐานทางเทคนิคมองฉันเป็นพ่อมด ส่วนฉันมองพวกเขาเป็นหมอผีวูดู' นี่ขำดีนะ

 
nutella 2024-06-12

ข้อมูล... ข้อมูล... เข้าใจเลย

 
halfenif 2024-06-10

ก็เป็นอย่างที่ผมจินตนาการไว้อย่างเลือนลางว่าพวกเขาคงทำกันอยู่แบบนั้นนั่นแหละ

 
tttttaa 2024-06-10

เนื้อหาน่าสนใจนะ!