Pytorch ได้รับความนิยมในการใช้งาน deep learning

26 มี.ค.

Pytorch ได้รับความนิยมในการใช้งาน deep learning

PyTorch เวลานี้ได้รับความนิยมมาก โดยเฉพาะอย่างยิ่งมีการปล่อยเวอร์ชัน 1.3 และ 1.4 ออกมาแล้ว ซึ่งสนับสนุนการทำงานในระดับโมบายล์ แต่ว่าทำให้เราถึงเลือก framework เป็น pytorch มากกว่า library ชนิดอื่นๆ MXNet, Chainer, or TensorFlow เรามาดูเหตุผลที่ควรเลือก pytorch กันดีกว่า

ก่อนอื่นก็ต้องยอมรับกันว่าเรารู้จักกับ tensorflow มากกว่า โดยเฉพาะอย่างยิ่งมันสามารถเขียนได้ทั้งแพลตฟอร์มของเว็บและโทรศัพท์มือถือ แต่เมื่อเปรียบเทียบกันแล้ว หลายคนบอกว่า tensorflow ห่วยแตก แต่ pytorch สุดยอดกว่ามาก  framework ของ pytorch ใช้งานได้ดี 

PyTorch จริงแล้วก็คือ python

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

ซึ่งภายใต้การประมวลแล้วมีการใช้งาน PyTorch นั่นเอง ที่เป็นเหมือนการปรับปรุง tensorflow เวอร์ชันใหม่ขึ้นมา คือเวอร์ชัน 2.0  นี้จึงเป็นเหตุผลที่เราควรศึกษา PyTorch ไว้ด้วย เราสามารถ debug โปรแกรมได้จาก tensorboard หรือ ใช้เทคนิคของ python โดยทั่วไป ที่มีการสร้าง กราฟจาก stack ตัวอ่าง ทำให้มันดูเป็นมิตรต่อการเรียนรู้ deep learning  จาก framework อื่นๆ ของ data science เช่น pandas หรือ Scikit-learn.

PyTorch ยังรวมสถานะของ API แบบสตาติก ที่เป็นเหตุผลหลักในการปล่อยเวอร์ชัน 1.3 ขึ้นมา ซึ่งเป็นการเปลี่ยนแปลงของตัวแปรใน tensors ขณะที่การเขียนโค้ดด้วย PyTorch เราจะต้องรู้หรือเข้าใจว่ามันมีการใช้งานอย่างไร

ความเร็วในการประมวลผลไม่สำคัญเท่ากับความเร็วในเชิงธุรกิจ

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

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

หมายความว่าคุณสามารถประหยัดเวลาการเขียนโปรแกรม และเขียนโปรแกรมได้อย่างมีประสิทธิภาพมากขึ้น ทำให้ใช้เงินน้อยลง แต่มีการพัฒนามากขึ้น เพราะว่าโค้ดมีลักษณะเป็น prototype อยู่แล้ว ทำให้คนเขียนสามารถไปโฟกัสเรื่องอื่นๆ ต่อไป 

19 มี.ค.

ทำความรู้จักกับ Kubernetes

Kubernetes เป็น open source สำหรับการรวบรวม, การจัดการโค้ดแบบออโต้เมติก มีการจัดสเกล จัดเตรียมเส้นทางของ container เพื่อให้มีการทำงานได้เร็วขึ้น ซึ่งโปรแกรมนี้เข้ามามีบทบาทอย่างมากในวงการ it ในช่วงไม่กี่ปีที่ผ่านมา ซึ่งมันถูกพัฒนาเป็นครั้งแรกจาก google และเปิดให้เป็น open source เมื่อปี 2014 และปัจจุบันถึงทำให้ขึ้น cloud ไปแล้ว และมีผู้พัฒนาโปรแกรม Kubernetes มากกว่าพันคนและมีการเปิดให้สอบ certificate ในการเป็น partner กับโปรแกรมนี้ด้วย

คุณสามารถสร้าง Kubernetes ได้บนจอ desktop ของตัวเอง

Docker desktop เป็นแอพลิเคชันที่ทำขึ้นใน macOS และระบบวินโดวส์ เพื่อการสร้างและแชร์ แอพลิเคชันที่เกี่ยวกับ container และ microservices ทั้งหลาย

การส่งผ่านด้วย docker desktop มีความรวดเร็วมาก, เป็นอีกทางเลือกหนึ่ง และช่วยในการออกแบบและจัดส่ง แอพลิเคชันในรูปแบบของ container ผ่านหน้าจอคอมพิวเตอร์ของคุณ Docker Desktop ประกอบไปด้วย iDocker App, developer tools, Kubernetes, and เครื่องมือด้านการซิงโครไนซ์ โค้ดขึ้นสู่โปรดักส์ชั่น Docker Desktop อนุญาตให้คุณแพคไฟล์รูปภาพหรือโค้ดดิ้งภาษาโปรแกรมหลายภาษาที่คุณต้องการลงในโปรแกรมนี้ 

ช่วยให้การดำเนินงานตาม workflow เกิดประสิทธิภาพสูง โดยการเก็บเข้าสู่ repository และสามารถนำมา build code, หรือการพัฒนาใหม่อีกครั้งและเพื่อการเก็บรวบรวมโค้ดที่ปลอดภัยยิ่งขึ้น

ทำไมเราต้องใช้ Kubernetes

Kubernetes เป็นแพลตฟอร์มมาตรฐานของการรวบรวม container หลาย container เข้าด้วยกัน ผู้ให้บริการ cloud ก็จะซัพพอร์ต container เหล่านี้ มันอาจกล่าวได้ว่าเป็นทางเลือกที่ดีหากว่าคุณต้องการนำแอพลิเคชันขึ้นไปบน cloud

Kubernetes จัดหา framework ขึ้นพื้นฐานเพื่อรันระบบที่แตกต่างกันในแต่ละนักพัฒนา, รวมถึงในรูปแบบของ infrastructure จาก development สู่ production ในทุกโปรเจ็คการทำงาน Kubernetes สามารถจัดการเรื่องสเกลที่ต้องการ, รูปแบบของการ deploy โค้ดขึ้นโปรดักชัน และอื่นๆ อีกมากมาย

ความสามารรถที่ครอบคลุมของมัน สามารถอธิบายได้ดังนี้คือ ให้บริการเรื่องการควบคุม process การทำงาน,เรื่องการคืนค่า service และเรื่องของ load balance, เรื่องการเก็บรวบรวมโค้ด, การจัดการกับรูปแบบของ container, การ deploy และการ rollback แบบอัตโนมัติ

ข้อดีของ kubernetes คือ Kubernetes มีความสามารถสูง ในการทำงานเป็นทีมที่ต้องการรวมโค้ดเพื่อ deploy โค้ดขึ้นโปรดักชันจำเป็นต้องมีคนรวบรวมโดยใช้โปรแกรมนี้ในการจัดการ ซึ่งความรู้เรื่องการ deploy production บางครั้งเราไม่จำเป็นต้อง coding ขึ้นมาใหม่ เพราะว่าความสามารถของโปรแกรมนี้มันจะช่วยท่านได้อยู่แล้ว

มันมีการทำงานในรูปแบบของ cluster ทำให้มีการทำงานที่รวดเร็วใช้งานกับ หน่วยงานที่หลากหลายได้ มีระบบจัดการที่เกี่ยวกับการจัดเก็บบน cloud ที่เรียกว่า Container Networking Interface (CNI) and Container Storage Interface (CSI) ที่เรามอนิเตอร์ผ่านโปรแกรมได้ 

13 มี.ค.

Data pipeline คืออะไร

จริงๆ แล้วคำว่า data pipeline เป็นศัพท์ที่เราได้ยินกันใหม่นานก็จริง แต่หากดูรายละเอียดของมันแล้ว ประกอบด้วยกระบวนการทำงานที่เรียกว่า Online Transactional Processing (OLTP), Online Analytic Processing (OLAP)

Data pipeline เป็นกระบวนการย้ายข้อมูลจากต้นทางไปยังปลายทาง โดยที่ข้อมูลต้นทางอาจจะมาจากแหล่งเดียวกันหรือหลายแหล่งกันก็ได้ มีสองประเภทคือ OLTP, OLAP 

Online Transactional Processing (OLTP) — เป็นระบบที่เก็บรายการเคลื่อนไหวในแต่ละวัน อาจจะไม่ใช่ข้อมูลที่เก่ามากนัก (ข้อมูลไม่เกิน 5 ปี) เช่นรายการฝาก-ถอนเงินของธนาคาร

ขณะที่ Online Analytic Processing (OLAP) ใช้เรื่องของการวิเคราะห์ข้อมูลมากกว่า คือเป็นข้อมูลตั้งแต่อดีตจนถึงปัจจุบัน ที่มีการเก็บอย่างเป็นระเบียบมาก่อนแล้ว ซึ่ง data ที่ผ่านกระบวนการ OLAP จะมี data มหาศาลบางครั้งต้องใช้เวลาในการประมวลผลนานเป็นพิเศษ

ช่วงที่มีการทำงาน data pipeline มีความเป็นไปได้ว่าอาจจะเกิด error เรื่องของ network ทำให้ data ต้นทางและ data ปลายทางไม่เชื่อมต่อกัน  ก็เป็นหน้าที่ของนักพัฒนาที่ต้องทำการกูคือข้อมูลที่ขาดไปให้กลับคืนมาใหม่ โดยที่ไม่ต้องเริ่มต้นกระบวนการใหม่ทั้งหมด

ซึ่งการสร้าง data pipeline นั้นก็จะมีขั้นตอนหลักหลายขั้นตอนดังนี้คือ 

  1. Sourcing การรวบรวมข้อมูลจากแหล่งข้อมูลต้นทาง และนักพัฒนาต้องเข้าใจเรื่องการดึง data ในแต่ละระบบด้วย เพื่อให้การดึงข้อมูลเกิดประสิทธิภาพและใช้เวลาน้อยที่สุด
  2. Joining เป็นการนำ data จากทั้งหมดมา join กัน หากว่า join กันได้ถึงจะเข้าหลักการของ data pipeline 
  3. Extraction คือการขยายไฟล์จากการย่อไฟล์ในครั้งแรก หากมีการดำเนินงานในครั้งต่อไป จึงจะทำ extraction ใหม่อีกรอบ ข้อมูลที่ควรทำ masking เช่น เลขบัตรประชาชน (id card), บัญชีธนาคารเป็นต้น 
  4. Standardization เป็นการทำ source data กับ target table มาเทรวมกันถือว่าเป็นการได้บุญเป็นอย่างดี และ
  5. Correction หรือแก้ส่วนที่ผิดพลาด เช่นจากปี พ.ศ, ให้เปลี่ยนกลับมาเป็นปี พ.ศ. เป็นต้น
  6. Load ก็คือการย้ายข้อมูลเข้าที่เก็บปลายทาง

7.Automation — หากต้องการให้เกิดความรวดเร็วต้องใช้ automate workflow ที่ตรวจจับและแก้ข้อผิดพลาดได้ 

data pipeline จะถูกเรียกใช้งานบ่อยครั้ง อาจจะเป็นลักษณะตั้งเวลาให้ทำงานตามรอบ หรือทำงานแบบต่อเนื่อง ซึ่งอาจจะเกิด error ระหว่างทำงานได้ การทำงานแบบ manual เป็นการเพิ่มความเสี่ยงให้เกิดข้อผิดพลาดได้สูง ในขั้นตอนนี้เราจะต้องออกแบบและจัดวางเครื่องมือ (automate workflow) รวมถึงการตรวจจับและแก้ไขข้อผิดพลาดอย่างอัตโนมัติให้ได้มากที่สุดเท่าที่ทำได้ เพื่อให้ข้อมูลมีความพร้อมใช้งานเสมอ

ต่อมาเรามาดูการเลือก tools ที่จะทำ data pipeline ก็ต้องดูว่าเป็น batch หรือว่าเป็นการทำงานแบบ real-time ซึ่งโปรแกรมด้านการทำ data pipeline มีดังนี้คือ Informatica PowerCenter,IBM InfoSphere DataStage,Talend,Pentaho

7 มี.ค.

เว็บไซต์

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

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

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

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

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