Ask HN: วิศวกรแมชชีนเลิร์นนิงทำอะไรกันในเวลางาน?
(news.ycombinator.com)- สรุปความคิดเห็นจากผู้ที่เข้ามาตอบคำถาม
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 ความคิดเห็น
สำนวนที่ว่า 'คนที่ไม่มีพื้นฐานทางเทคนิคมองฉันเป็นพ่อมด ส่วนฉันมองพวกเขาเป็นหมอผีวูดู' นี่ขำดีนะ
ข้อมูล... ข้อมูล... เข้าใจเลย
ก็เป็นอย่างที่ผมจินตนาการไว้อย่างเลือนลางว่าพวกเขาคงทำกันอยู่แบบนั้นนั่นแหละ
เนื้อหาน่าสนใจนะ!