เด็กภาคไฟมาเขียน code รีวิวฝึกงาน Data Scientist ที่ AltoTech — ความรู้ ที่ได้มาจากการลงมือทำจริง

natanon.t
5 min readJul 13, 2022

--

สวัสดีครับทุกคน แนะนำตัวก่อนนะครับผมชื่อ ไบร์ท มาจากคณะวิศวกรรมศาสตร์ ภาควิชาวิศวกรรมไฟฟ้า จุฬาลงกรณ์มหาวิทยาลัย กำลังจะขึ้นชั้นปีที่ 4 ครับ วันนี้จะมาลองเขียน Blog เล่าประสบการณ์ที่ได้เข้าไปฝึกงานในทีม Data Science ของบริษัท AltoTech ซึ่งเป็น Start up ที่ทำเกี่ยวกับการจัดการระบบพลังงานในอาคาร ด้วยเทคโนโลยี AI โดยฝึกงานเป็นเวลาประมาณ 3 เดือนว่าได้ทำอะไรบ้าง สภาพแวดล้อมการทำงานเป็นยังไง(อาจไม่ได้ลงรายละเอียดตัวงานลึกมากนะครับบบ)

ทำไมถึงมาฝึกงานที่ AltoTech ?

จริง ๆ แล้วผมก็พอได้ยินงานเกี่ยวกับด้าน Data Science หรือ Machine Learning มาซักระยะหนึ่งแล้วแต่ก็ยังไม่ได้หาข้อมูลเพิ่มเติมมากนัก จนช่วงหลังว่าง ๆ ถึงได้มีเวลาศึกษา ก็พบว่าเป็นศาสตร์ที่ใช้ความรู้หลายอย่างรวม ๆ กันซึ่งพอเริ่มเรียนไปเรื่อย ๆ ก็พบว่าน่าสนุกดี แต่ก็ยังไม่ได้จริงจัง หรือมองภาพในอนาคตไว้ขนาดนั้น

พอเริ่มมาช่วงต้นปี 2022 ทางภาคก็ให้เริ่มหาที่ฝึกงานสำหรับช่วง summer เดือนมิถุนายนได้แล้ว ตอนนั้นผมค่อนข้างสับสน ว่าจะฝึกตรงสายทางไฟฟ้าไปก่อน หรือจะฝึกทาง Data Science ไปเลยดี แต่ตอนนั้นผมก็ยังไม่มั่นใจความรู้ทาง Data Science ของตัวเองเพราะว่ายังเรียนมาไม่มากนักกับเขียน Python ล่าสุดก็คือตอนปี 1 จึงคิดว่าอาจจะเรียนเพิ่มแล้วฝึกตรงสายไปก่อน แล้วค่อยไปหาฝึกเพิ่มตอนปี 4 เอา

แต่จุดเปลี่ยนตอนนั้นคือตอนที่ ทางคณะ ได้จัดงาน Job Fair ขึ้น ก็มีบริษัทต่าง ๆ เข้ามาประชาสัมพันธ์เยอะมาก ผมก็เข้าฟังหลายบริษัทที่เกี่ยวข้องกับภาคไฟฟ้าจนกระทั่ง มาถึง AltoTech เริ่มแรกพี่ที่บริษัทก็อธิบายงานต่าง ๆ ที่บริษัททำ

งานและเป้าหมายหลักของ AltoTech

ซึ่งหลัก ๆ ก็คือ การ Optimize การใช้พลังงานต่าง ๆ ของอาคารรวมถึงลดการปล่อย Gas Carbon dioxide สู่ชั้นบรรยากาศ โดยใช้ประโยชน์จากอุปกรณ์ IoT sensors และเทคโนโลยีด้าน AI พอผมฟัง ๆ แล้วก็น่าสนใจดีรวมถึงการฝึกงานกับบริษัท Start up น่าจะได้ทำอะไรเยอะแน่ ๆ แต่ก็ยังไม่ได้สมัครไปทันทีนะ อย่างที่บอกตอนนั้นส่งแต่บริษัทที่ตรงสายด้านไฟฟ้าตรง ๆ ไปก่อน

พอผ่านไปซักเดือนนึงถึงได้เริ่มมาคิด ๆ ว่าจริง ๆ แล้วผมก็อยากทำงานสาย Data Science มากกว่า อีกอย่างผมก็รู้สึกว่าตอนเรียนคอร์ส online อยู่บ้านเนี่ยมันก็ยังไม่ค่อยเข้าใจมากพอ กับยังไม่เห็นภาพในบางเนื้อหาขนาดนั้น ถ้าได้ลงมือปฏิบัติ กับงานจริงควบคู่ไปด้วย น่าจะเรียนรู้ได้เร็วและมีประสิทธิภาพกว่า ก็เลย email หาทางบริษัท แล้วพี่เค้าก็ส่ง Test ให้ทำมีเวลาประมาณสองวัน

ตอนนั้นก็ตั้งใจทำมากเลยนะ 555 มีบางอย่างที่ต้องทำแต่ยังไม่เคยเรียน โดยเฉพาะ การทำ Dashboard ผ่าน Dash Plotly ซึง component ส่วนมากจะมาจากทาง html ซึ่งก็ไม่เคยแตะมาก่อนเหมือนกันก็นั่งงม ๆ อยู่นาน พอทำ Test เสร็จก็ส่งให้พี่เค้า แล้วก็เข้าไปที่ Office สัมภาษณ์กับพี่หัวหน้าทีม Data Science(พี่เจ) พี่เค้าก็ถามเรื่องทั่วไป หลักการบ้างเล็กน้อย ตอนนั้นน่าจะปลายเดือนกุมภาฯ พี่เค้าก็บอกว่าจะฝึกเลยก็ได้นะ ตอนนั้นก็คิดว่าเบื่อ ๆ พอดีไม่ค่อยมีอะไรทำก็เลยตอบว่า ฝึกเลยก็ได้ครับ(แต่คือหลังเริ่มหลังจากนั้นสองอาทิตย์อีกทีนะ เพราะช่วงนั้นจุฬาฯ สอบ Midterm อยู่พอดี ได้เริ่มจริง ๆ ประมาณกลางเดือนมีนา) พี่เค้าก็ให้เข้า Office อาทิตย์ละ 3 วันช่วงนั้นเรียนออนไลน์พอดีเลยพอหาเวลาได้อยู่ แล้วก็ลากยาวไปถึงช่วงปิดเทอม

ฝึกงานที่นี่ได้ทำอะไรบ้าง ?

ช่วงอาทิตย์แรก ๆ ที่เข้าไปก็จะได้เรียน Tools ต่าง ๆ ที่ทางบริษัทใช้ทั้ง Git & GitHub Workflow, การเข้าถึง Database สำหรับดึงข้อมูลมาใช้งาน และอื่น ๆ อีกหลายอย่าง ซึ่งถือว่าเป็นเรื่องใหม่สำหรับผมทั้งหมด พี่เค้าก็วาง plan ไว้ให้ว่า Tools อะไรที่ต้องใช้เป็นบ้าง ตอนนั้นก็รู้สึกว่ายากนะ เปิดโลกใหม่ไปเลยอะ เรียนภาคไฟมาปกติ ก็เขียนแต่สมการยาว ๆ หรือถ้าเขียนโปรแกรม ก็ได้ใช้แต่ MATLAB ต้องรื้อ Python ที่เรียนมาเมื่อชาติที่แล้วอีก เพราะต้องใช้เยอะกว่าตอนที่ทำ Test ส่งแล้ว(งาน Data Science ภาษาฮิต ๆ มันก็ R, Python พวก library กับ framework ไรงี้มีให้เลือกใช้เยอะ MATLAB มันออกแนวค่อนข้างหนักเครื่องแถมยังมีค่า license อีกต่างหาก แต่ตอนนี้ยังเรียนไม่จบยังใช้ฟรีอยู่ 555)พอกลับจากฝึกงาน ตอนที่ยังเปิดเทอมก็ต้องกลับไปเคลียร์การบ้านกะงานที่ต้องส่งอาจารย์ที่ภาคด้วย ช่วงนั้นคือรู้สึกหัวมันหนึบ ๆ ตลอดเวลา 555555 ก็ใช้เวลาปรับตัวระยะนึงเลยถึงจะเริ่มชิน แล้วพี่เค้าก็จะเริ่ม assign งานให้ งานหลัก ๆ ที่ได้ทำก็จะเป็น 2 ประเภทใหญ่ ๆ

Data Science Projectเป็นส่วนงานหลักของทางทีมเลยก็ว่าได้ ก็จะทำพวกวิเคราะห์ข้อมูล หา Solutions สำหรับปัญหาต่าง ๆ (ซึ่งส่วนมากจะออกมาในรูป Model ทาง Machine Learning) อย่างที่ผมได้ทำก็จะเป็น Load กับ Solar Forecasting โดย data ที่ใช้ก็จะเป็น data ที่มาจาก IoT sensors ที่ทางบริษัทได้เข้าไปทำการติดตั้งที่อาคารของลูกค้าแต่ละราย โดยข้อมูลก็จะถูกยิงขึ้น Database ที่บริษัทใช้งานอยู่ คร่าว ๆ ก็จะมี data จำพวก กำลังไฟฟ้า, อุณหภูมิภายใน-ภายนอกอาคาร, status ของระบบปรับอากาศ ฯลฯ แล้วก็ไล่ทำตาม Workflow โดยทุกครั้งพี่เค้าก็จะถาม check เราว่าเราเข้าใจโจทย์ดีพอรึยัง โดยต้องตอบให้ได้ว่า Project นี้ทำไปทำไม เป้าหมายคืออะไร ผลลัพธ์ที่ได้จะนำไปใช้งานจริงได้ยังไง

ก่อนจะเริ่มทำ project อะไรก็แล้วแต่ต้องวางแผนขั้นตอนการทำงานชัดเจนจะได้ไม่เสียเวลาทีหลัง

เช่นโจทย์ Solar Forecasting ที่ทำจะเป็นการ forecast ล่วงหน้าระดับ 1 วัน ถ้าเรารู้ว่า พรุ่งนี้เราจะผลิตไฟฟ้าได้เท่าไหร่ เราก็พอจะมาวางแผนได้ว่าควรควบคุมระบบพลังงานอย่างไร เพื่อที่สัดส่วนพลังงานไฟฟ้าที่ import มาจาก grid มีความคุ้มค่าและมีประสิทธิภาพสูงสุด(ต้องรู้ก่อนว่าสำหรับ ระบบผลิตไฟฟ้าจากพลังงานแสงอาทิตย์เนี่ย ถ้าเป็นระบบแบบไม่มี battery ไว้สำหรับเก็บพลังงานส่วนเกินที่ไม่ถูกใช้ โดยหลักการแล้วคือช่วงที่ผลิตไฟฟ้าได้ ก็จะใช้พลังงานที่ผลิตได้จากแผง Solar cell จนเต็มประสิทธิภาพก่อน จากนั้นจึง import เพิ่มจาก grid ในส่วนที่ต้องการใช้เพิ่ม) ส่วนโจทย์ Load Forecasting ที่ทำคือจะเป็นการ forecast ล่วงหน้าระดับ 1 ชั่วโมง เป้าหมายของ project นี้ก็คือถ้าเรารู้แนวโน้มว่าการใช้พลังงานภายในอาคารว่าจะเพิ่ม-ลดในเร็ว ๆ นี้อย่างไร เราก็จะสามารถนำไปปรับ strategy การควบคุมระบบพลังงานในอาคารได้แบบทันที

เวลาทำ model ก็จะ log experiment ผ่าน platform ที่ชื่อว่า Weight and Bias ซึ่งดีมาก save ได้ทั้ง ผลลัพธ์ที่เป็นกราฟ, score ไว้เทียบกันหรือกระทั่ง ไฟล์ model หรือ scaler แต่ละครั้ง

โดยรวมเป็นงานที่พัฒนา skill ผมหลายอย่างมาก ๆ แต่ที่สำคัญเลยคือเรื่อง Data Science Workflow ในแต่ละ Project ว่าอะไรควรทำก่อนหลังเพื่อให้ผลลัพธ์ออกมาดี อย่าง Project Load Forecasting ก็เป็นงานที่ผมได้ลองทำคนเดียว ซึ่งข้อดีเลยเนี่ย คือได้เห็นภาพรวมงานทั้งหมดและได้ลงมือทำด้วยตัวเองทุก process จริง ๆ ทำให้เข้าใจเนื้องานทุกส่วนมากขึ้นมาก ๆ บางทีเวลาเรียนพวกคอร์ส online เนี่ยเราก็ยังไม่เห็นภาพหรอกว่าตอนทำงานจริงมันจะป็นยังไง เจอ data ขาดมาแบบนี้ควรจัดการยังไง รวมถึงได้พัฒนา Domain Knowledge ผมหลายอย่างเลย(ตอนทำ Project ใหม่แต่ละครั้งต้องทำ research ก่อนเสมอซึ่งตอนที่ทำก็จะได้ความรู้ใหม่ ๆ เยอะมาก) ถือว่าเป็นส่วนงานที่สนุกและได้ความรู้เยอะดีครับ

Dashboard — เป็นการทำ Visualize แบบต่าง ๆ สำหรับ monitor หรือวิเคราะห์ข้อมูล, หา Insight data ที่มาจากฝั่ง IoT เพื่อนำไปพัฒนา Products ของทางบริษัท รวมไปถึง ไว้สำหรับ Tracking Performance ของแต่ละ Model ว่าใช้งานจริงแล้วผลลัพธ์เป็นอย่างไรบ้าง โดยทางทีมก็จะมี Dashboard แยกของแต่ละ site(อาคาร) และแยกเป็นหน้าย่อย ๆ สำหรับของแต่ละ site อีกทีนึง

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

งานส่วนนี้เนี่ยจริง ๆ แล้วบางคนอาจจะไม่อยากทำนัก เพราะอาจต้องคิดถึงเรื่องการเลือกวิธีนำเสนอ, ความสวยงามหรือ การเลือกสีกราฟให้สื่อความหมายมากที่สุด(ผมก็เลือกไม่ค่อยเป็นเหมือนกัน ต้องคอยถามคนอื่นเอาว่าสีนี้ได้รึยัง 555) แต่เอาจริง ๆ แล้วถือเป็นงานที่สำคัญไม่น้อย พี่ที่ดูแลเคยถามผมว่า “ทำไมอาชีพนี้ถึงเรียกว่า Data Scientist ทำไมไม่เรียกว่า Model Engineer” ฝึกงานไประยะนึง ก็เริ่มเห็นภาพมากขึ้น ว่าจริง ๆ แล้วเนี่ยก่อนที่จะเริ่มทำ Model เราก็ต้องเข้าใจโจทย์, เข้าใจ data ที่เรามี ดังนั้นทักษะการ visualize เป็นสิ่งสำคัญมาก การ visualize ด้วยรูปแบบต่าง ๆ (ทั้งกราฟแท่ง, กราฟเส้น, Histogram แผนภูมิวงกลม, แผนภูมิรูปภาพ) ถ้าเราสามารถเลือกและปรับแต่งได้ดี จะสามารถทำให้เราเข้าใจ data ได้ง่ายขึ้นและนำไปใช้ได้อย่างเหมาะสม รวมถึงยังสามารถสื่อสารกับคนอื่นได้ง่าย หรือบางครั้งเวลา present ลูกค้า score หรือ metrics บางตัวเนี่ยเค้าก็อาจจะไม่เข้าใจหรอกว่ามันหมายความว่าอะไร แต่ถ้าเรามี graph และการนำเสนอที่ดี เค้าก็จะเข้าใจถึงสิ่งที่เราต้องการจะสื่อสารได้มากขึ้น (ซึ่งก็ถือว่าเป็นทักษะที่ผมยังต้องฝึกฝนอยู่ระดับนึงเลย)

บรรยากาศการทำงานที่ AltoTech

เนื่องจากเป็นบริษัท Start up จำนวนคนใน Office จึงไม่ค่อยเยอะมาก เวลาติดอะไรหรืออยากถามพี่ ๆ ทั้งในทีมเราหรือทีมอื่น ก็สามารถเดินไปถามได้เลย รวมถึงมีการจัด Knowledge Sharing Session อยู่บ่อยครั้ง ไว้ให้ทั้ง พี่ ๆ รวมถึง น้อง ๆ ฝึกงานได้มา share ความรู้กัน เรื่องบางอย่างถ้าเราไปนั่งศึกษาเองคนเดียวเนี่ย อาจจะใช้เวลาทำความเข้าใจนาน แต่ถ้ามีคนที่พอมีประสบการณ์ด้านนั้นอยู่แล้ว มาไกด์ หรือให้แนวทางเนี่ย เราก็จะย่นระยะเวลาที่ต้องไปงมเองได้มากเลยทีเดียว ถือว่าเป็นสภาพแวดล้อมที่เหมาะกับการเรียนรู้เป็นอย่างมาก อย่างช่วงที่ผมไปฝึกงานเนี่ยมี พี่ ๆ น้อง ๆ จากโครงการ Super AI Engineer เข้ามาร่วมฝึกงานด้วย ทำให้มีเพื่อนไว้ให้ถามเรื่องงาน หรือเดินไปกินข้าวพร้อมกันมากขึ้น 555 ทำให้ช่วงฝึกงานสนุกและครื้นเครงขึ้นเยอะเลยทีเดียว

Zone ทำงานของ Intern
พี่อาร์ม(CEO) เวลาเจออะไรใหม่ ๆ ก็จะคอยมาเล่าให้พนักงานกับน้อง ๆ Intern ที่บริษัทฟังอยู่ตลอด

หรือบางครั้งอยากเปลี่ยนบรรยากาศตอนทำงาน ชั้นข้างล่างก็มี Working space ให้ลงไปใช้ได้มีห้องประชุม, ที่นอนพัก(เอาไว้งีบหลังกินข้าวเสร็จ) รวมถึงมีร้านกาแฟ โดยพี่ที่บริษัทก็จะให้ตั๋วฟรี มาใช้แลกกาแฟเอามานั่งกินตอนทำงานได้ (บน Office ก็มีขนมให้กินเล่นด้วยนะ)

ลงมานั่งทำงานข้างล่างกับน้อง Intern อีกคนในทืม
กาแฟที่แลกมาจากร้านชั้นล่าง
ขนมที่ Office ช่วงหิว ๆ ก็คือเดินวนเป็นว่าเล่น 555

ไม่ได้อยู่แต่ใน Office นะ

มี project นึงที่ได้ทำร่วมกับทางทีมชื่อว่า Occupancy Detection เล่าคร่าว ๆ คือสำหรับโรงแรมปกติเนี่ยที่เป็นระบบ keycard ไฟในห้องก็จะตัดเวลาคนออกจากห้องไปใช่ไหมครับ แต่สำหรับโรงแรมที่ไม่ได้ใช้ระบบ keycard หรือ ใช้แต่ลูกค้าออกไป แล้วเสียบ keycard ทิ้งไว้ ไฟในห้องหรือเครื่องปรับอากาศอาจจะยังเปิดอยู่ ซึ่งเมื่อเกิดกรณีแบบนี้หลาย ๆ ครั้งเข้าเนี่ยจะถือว่าเป็นการสูญเสียพลังงานที่ไม่ได้ถูกใช้เป็นจำนวนมาก แถมเป็น cost ที่ทางเจ้าของโรงแรมต้องแบกรับอีกต่างหาก

แล้วจะทำยังไงให้รู้ว่าคนออกจากห้องไปแล้วหละ ? ติดกล้องดีไหม ? เป็นไปไม่ได้อยู่แล้ว ไปนอนโรงแรม แขกที่ไหนจะยอมให้มาติดกล้องในห้องที่ตัวเองจะเข้าไปพักหละ 5555 ทางออกที่เราจะใช้ก็คือ ใช้ data ของ CO2 ภายในห้องเนี่ยแหละเป็นตัวบอกนั่นเอง ถามว่าปริมาณ CO2 เนี่ยมันจะ detect คนได้ยังไงต้องเล่าก่อนว่าเวลาคนเราหายใจแลกเปลี่ยน gas เนี่ย เราก็จะผลิต CO2 ออกมาใช่ไหมครับ CO2 ที่คนเราผลิตออกมาเนี่ยก็จะสะสมภายในห้องเรื่อย ๆ (แต่ก็ไม่ได้สะสมเพิ่มได้จนไม่มีขีดจำกัดนะ ในห้องมันก็มีระบบระบายอากาศหรือช่องใด ๆ ที่อากาศมันจะพอถ่ายเทออกไปได้อยู่ เมื่อมันเพิ่มถึงจุด ๆ ค่ามันก็จะเริ่มคงที่ของมันเอง) และเมื่อคนออกจากห้องไปเนี่ย CO2 ก็จะไม่มีการผลิตเพิ่ม ที่เคยมีอยู่ในห้องก็จะเริ่มถ่ายเทออกไปเรื่อย ๆ เราจะใช้ข้อมูลตรงเนี่ยแหละมาบอกว่า ไม่มีคนอยู่ในห้องแล้วตัดไฟได้เลย ประมาณนี้ครับ

โดยครั้งนี้ผมก็ได้ไปกับทางทีม เพิ่มเก็บข้อมูลมาวิเคราะห์ ที่โรงแรม Mintel หัวหมาก เป็นเวลา 2 คืน(ก็คือเป็นพวกเราเองไปใช้ชีวิตในโรงแรม ยังไม่ใช่ข้อมูลลูกค้านะ) ก็เอา sensors ไปติด แล้วก็ช่วย ๆ กันเอาข้อมูลที่ได้มาวิเคราะห์ เพื่อหา pattern ของแต่ละกรณี ก็ถือว่าสนุกดีครับได้ทำงานนอกสถานที่กับเพื่อน ๆ ครั้งแรก

หน้าโรงแรม MIntel หัวหมาก

สรุป

การฝึกงานครั้งนี้นับว่าเป็นการฝึกงานครั้งแรกของผม แถมยังเป็นสายงานที่ไม่ตรงกับสิ่งที่เรียนในมหาวิทยาลัยซะทีเดียว ผมได้มาเรียนรู้อะไรใหม่ ๆ หลายอย่างครั้งแรกจากที่นี่ การฝึกงานที่ AltoTech ทำให้ผมได้ลงมือทำจริง ๆ โดยมีพี่ ๆ คอย feedback และให้คำแนะนำ ว่าควรแก้ตรงไหนเพราะอะไร จะได้มีแนวทางในการพัฒนางานในครั้งต่อ ๆ ไปได้ ทำให้ผมเห็นภาพการทำงานของงาน Data Science มากยิ่งขึ้น (จากตอนแรกยังไม่ค่อยมั่นใจว่าชอบงานสายนี้จริง ๆ ไหม พอได้ทำแล้วก็แน่ใจมากขึ้นเพราะเรายังสนุกกับมันอยู่จริง ๆ ) และได้ skill ใหม่ ๆ กลับไปเยอะกว่าที่คิดไว้ตอนแรกมาก

ขอบคุณพี่เจ ผู้ดูแลและให้คำแนะนำตลอดช่วงการฝึกงาน ที่ได้ให้โอกาสผมได้เข้าไปเรียนรู้ แม้ตัวผมนั้นยังไม่มีประสบการณ์ในด้านนี้มากนัก แต่พี่เจก็จะคอยส่งคลิป ส่ง link แหล่งเรียนรู้ต่าง ๆ ที่จำเป็นมาให้ อีกทั้งคอยแนะนำขั้นตอนการทำงานของผมให้เป็นระบบยิ่งขึ้น, พี่อาร์ม(CEO) ที่คอยอธิบายโจทย์ เวลาที่น้อง ๆ ยังไม่เข้าใจ และยังชอบซื้อของกินต่าง ๆ มาให้กินที่ Office อยู่เสมอ, พี่ ๆ ทีมอื่นทั้งทีม IoT ทีม Dev ที่คอยให้ความรู้เพิ่มเติมที่จำเป็นสำหรับการทำงาน แต่ละ Project (เช่นเรื่องอุปกรณ์ IoT หรือเรื่อง Database) รวมถึงเพื่อน ๆ ที่ฝึกงานด้วยกันที่ทำให้การฝึกงานครั้งนี้สนุก และน่าจดจำอย่างมาก

พี่เจอธิบาย code ว่า code พลาดตรงไหนทำไม Deploy ไปแล้วใช้ไม่ได้

สุดท้ายนี้ ถ้าใครอยากลองฝึกงานที่ AltoTech ลองส่ง email ไปที่ kwarodom@altotech.net รับรองว่าได้ลองทำอะไรสนุก ๆ และท้าทายแน่นอนครับบ

--

--