ใช้ 제지 공장ทำ 자동화กับ Jupyter 노트북

출신 배경


ในยุคนี้เวลาที่ชาว 데이터 과학자อยากจะสื่อสารผลที่ได้จากการวิเคราะห์ข้อมูลกับฝั่ง 상업หรืออยากที่จะสร้างโมเดลทำนายผลทางธุรกิจสักอย่างหนึ่ง Jupyter Notebooks จะเป็นอาวุธหรือเครื่องมือสำคัญที่ส่วนใหญ่เราจะหยิบเอามาใช้กัน ซึ่งข้อดีของเครื่องมือตัวนี้ก็คือมันสามารถเป็นทั้ง 파일เป็น 실시간 코드รวมไปถึง 가시화ภายในตัว

도전하다


แต่อย่างไรก็ดี เครื่องมือตัวนี้ยังมีข้อจำกัดอยู่ที่ว่าเวลาที่เรา
  • อยากจะเปลี่ยนแปลงค่า 입력บางค่า หรือว่ามีส่วนของโค้ดที่เราอยากไปดึงข้อมูลหลังจากจบเดือนนี้ หรือดึงโค้ดในวันสิ้นปี เราต้องเปิด 공책นั้นๆ ขึ้นมาในวันนั้นๆ แล้วสั่ง 처단하다แต่ละ 독방เอง
  • อยากจะใช้ค่าจากผลการทดลองที่อยู่ใน 공책ของเพื่อนร่วมทีม สิ่งที่เราต้องทำก็คือไปเปิด 공책ของเพื่อน นั่งไล่ 처단하다แต่ละ 독방แล้วก็อปปี้ผลที่ได้มาแปะใน 공책ของเราเพื่อนำค่านั้นๆ ไปใช้งานต่อ
  • ทำแค่ครั้งสองครั้งน่าจะยังสบายๆ อยู่ แต่เมื่อไหร่ก็ตามที่เราต้องทำแบบนี้ไปเรื่อยๆ ทุกๆ อาทิตย์ หรือบ่อยกว่านั้น คงจะไม่สนุกแน่ เราควรเอาเวลาไปใช้กับสิ่งที่มีคุณค่ามากกว่านี้ดีกว่า

    제지 공장 안내


    บทความนี้เลยอยากจะมาแนะนำเครื่องมือ 개원ตัวหนึ่งที่ชื่อ Papermill ครับ เค้าว่ามาแบบนี้

    Papermill is a tool for parameterizing and executing Jupyter Notebooks.


    หมายความว่าเราสามารถที่จะ
  • กำหนด 매개 변수และส่งเข้า 공책ของเราได้
  • สั่ง 처단하다ตัว 공책ของเราได้
  • แน่นอนครับ เมื่อเรามีความสามารถแบบนี้ เราจึงสามารถทำ 자동화หรือจับเอา 공책ของเราเข้าไปรวมอยู่ใน 워크플로우 자동화ได้แล้วน่ะสิ! ปัญหาที่เอ่ยถึงด้านบนก็ถูกแก้ไขไปเรียบร้อยแล้วด้วยเครื่องมือตัวนี้ครับ
    สิ่งที่ 제지 공장ทำมีอยู่ 삼.ขั้นตอนสั้นๆ คือ
  • รับ 공책มาพร้อมกับ 매개 변수ที่เรากำหนด
  • ทำ 처단하다ตัว 공책นั้นๆ ให้
  • บันทึกผลลัพธ์ไว้ใน 공책ไฟล์ใหม่
  • อยากลองเล่น? ไปดูหัวข้อถัดไปกันเลย~

    제지 공장 입문


    ติดตั้ง 제지 공장กับ Jupyter 노트북ก่อนครับ
    pip install papermill jupyter
    
    เสร็จแล้วก็ให้เปิด 서버ของ Jupyter 노트북ขึ้นมา
    jupyter notebook
    
    เสร็จแล้วก็เขียนโค้ดตามปกติประมาณนี้

    ต่อไปให้เรากำหนด 태그ให้กับ 독방ที่เราอยากให้เป็น 매개 변수ครับ วิธีกำหนดก็ตามรูปด้านล่างนี้เลย กดที่ 독방นั้นๆ ก่อน

    ให้เราใส่ 태그เป็นคำว่า parameters ครับ

    เสร็จแล้วให้เราไปที่ 에어 스테이션แล้วสั่ง
    papermill -p name 'Kan' -p x 9 -p y 8 main.ipynb output.ipynb
    
    คำสั่งด้านบนนี้แปลว่าเรากำหนด 매개 변수ตามนี้
  • name ให้มีค่าเป็น 한 줄มีค่า 'Kan'
  • x ให้เป็น 정수มีค่า 9
  • y ให้เป็น 정수มีค่า 8
  • พอรันเสร็จให้เราเปิดไฟล์ 공책ที่เราได้ออกมาใหม่ที่ชื่อ output.ipynb ดูครับ จะเป็นประมาณนี้

    เห็นได้ว่า 제지 공장มาแทรก 독방ที่มี 태그ชื่อ injected-parameters ไว้ข้างใต้ 독방ของเราที่ 태그ไว้ก่อนหน้านี้ ซึ่งทำให้ 독방ถัดๆ ไปได้ใช้ค่า 매개 변수ที่โดน 주사하다เข้าไปแทนที่จะใช้ 매개 변수ที่เรากำหนดไว้ตอนแรก
    ดูเป็นวิธีที่ 이해하기 쉽다มากๆ แต่แก้ปัญหาได้เยอะเลยนะ งดงามมาก
    ใครอยากเห็นโค้ดที่ใช้ในบทความนี้ ตามไปดูกันได้ที่ hello-papermill
    ใครที่ใช้ 제지 공장กันอยู่ อยากรู้จังว่าเอาไปใช้ใน 용례ไหนกันบ้าง แชร์กันมาได้นะครับ ^^
    ปล. ถ้าเราไม่ 태그คำว่า parameters ที่ 독방ของเราไว้ 제지 공장จะใส่ injected-parameters ไว้ที่ 독방ด้านบนสุดให้

    좋은 웹페이지 즐겨찾기