กำหนดค่าเมล็ดสุ่มเพื่อให้รันซ้ำได้ผลเดิม
ควบคุมเมล็ดสุ่มใน NumPy, PyTorch และ Python
กำหนดค่าเมล็ดสุ่มเพื่อให้รันซ้ำได้ผลเดิม เป็นบทเรียน MLOps Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน MLOps Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส MLOps Academy มีบทเรียนทั้งหมด 4 บทเรียน
เหตุผลที่การทำงานให้ผลต่างกัน
ML ใช้ความสุ่มในการสับเปลี่ยนข้อมูล การแบ่งชุดข้อมูล และการเริ่มต้นค่าน้ำหนัก เมื่อทำงานสองครั้ง คุณจะได้โมเดลสองแบบที่ต่างกัน การกำหนดค่าเริ่มต้นทำให้ความสุ่มเกิดซ้ำได้ 🎲
ค่าเริ่มต้นคืออะไร
ค่าเริ่มต้นคือจำนวนเริ่มต้นสำหรับตัวสร้างค่าฯ สุ่ม เมื่อป้อนค่าเริ่มต้นเดียวกัน ก็จะได้ลำดับตัวเลขสุ่มเดียวกัน
กำหนดค่าเริ่มต้นให้ Python
มอดูล random ของ Python เองต้องใช้ random.seed เพื่อให้การสับเปลี่ยนใด ๆ ใน Python ธรรมดาสามารถสร้างซ้ำได้
import random
random.seed(42)กำหนดค่าเริ่มต้นให้ NumPy
งานข้อมูลส่วนใหญ่ไหลผ่าน NumPy ดังนั้นให้ตั้งค่า np.random.seed เพื่อให้การสับเปลี่ยนอาร์เรย์และการสุ่มตัวอย่างมีผลเหมือนเดิม
import numpy as np
np.random.seed(42)กำหนดค่าเริ่มต้นให้ PyTorch
การเริ่มต้นในการเรียนรู้เชิงลึกและการดรอปเอาต์ใช้ตัวสร้างค่าของ PyTorch ดังนั้นให้เรียกใช้ torch.manual_seed ก่อนสร้างโมเดล
import torch
torch.manual_seed(42)อย่าลืม GPU
CUDA มีสถานะสุ่มของตัวเอง จึงต้องกำหนดค่าเริ่มต้นแยกต่างหาก cuda.manual_seed_all ครอบคลุมอุปกรณ์ GPU ทุกตัวพร้อมกัน
torch.cuda.manual_seed_all(42)กำหนดค่าเริ่มต้นให้การแบ่งชุดข้อมูลของ scikit-learn
ส่ง random_state ให้ฟังก์ชันอย่าง train_test_split เพื่อให้แถวเดิมไปอยู่ในการแบ่งชุดเดิมทุกครั้งที่ทำงาน
train_test_split(X, y, random_state=42)รวมไว้ในตัวช่วยเดียว
รวมการเรียกใช้ค่าตั้งต้นทุกอย่างไว้ในฟังก์ชัน set_seed เดียว เรียกใช้ครั้งเดียวเมื่อเริ่มต้น เพื่อไม่ให้ลืมส่วนใด
def set_seed(s):
random.seed(s)
np.random.seed(s)
torch.manual_seed(s)บังคับให้เคอร์เนลมีผลแน่นอน
เคอร์เนล GPU บางตัวอาจยังให้ผลแบบสุ่มแม้กำหนดค่าเริ่มต้นแล้ว เปิดโหมด deterministic ใน PyTorch เพื่อบังคับให้การคำนวณเกิดซ้ำได้
torch.use_deterministic_algorithms(True)บันทึกค่าเริ่มต้น
บันทึก ค่าของค่าเริ่มต้น ที่ใช้ไว้พร้อมกับการทำงานเสมอ ผลลัพธ์ที่คุณสร้างซ้ำไม่ได้คือผลลัพธ์ที่คุณไม่อาจเชื่อถือได้
สร้างซ้ำได้ แต่ฮาร์ดแวร์ไม่เหมือนกัน
แม้กำหนดค่าเริ่มต้นแล้ว ผลลัพธ์ก็อาจเปลี่ยนไปเมื่อใช้ ฮาร์ดแวร์ต่างกัน หรือไลบรารีต่างเวอร์ชัน ดังนั้นต้องตรึงสิ่งเหล่านั้นด้วยเพื่อให้ทำซ้ำได้อย่างแท้จริง
ตรวจสอบอย่างรวดเร็ว
คุณกำหนดค่าเริ่มต้นให้ Python และ NumPy แล้ว แต่โมเดล PyTorch ยังให้ผลต่างกัน คุณพลาดอะไรไป
สรุปทบทวน
คุณเรียนรู้การกำหนดค่าเริ่มต้นให้ แหล่งความสุ่มทุกแหล่ง ได้แก่ Python, NumPy, PyTorch, CUDA และ sklearn แล้วบันทึกค่าเริ่มต้นเพื่อให้การทำงานสร้างซ้ำได้ 🔁
คำถามที่พบบ่อย
บทเรียน “กำหนดค่าเมล็ดสุ่มเพื่อให้รันซ้ำได้ผลเดิม” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “กำหนดค่าเมล็ดสุ่มเพื่อให้รันซ้ำได้ผลเดิม” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส MLOps Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส MLOps Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “กำหนดค่าเมล็ดสุ่มเพื่อให้รันซ้ำได้ผลเดิม”
ควบคุมเมล็ดสุ่มใน NumPy, PyTorch และ Python คุณปฏิบัติ MLOps Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน MLOps Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน MLOps Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “กำหนดค่าเมล็ดสุ่มเพื่อให้รันซ้ำได้ผลเดิม” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน MLOps Academy นี้ได้ไหม
ได้ บทเรียน MLOps Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ตรึง Dependencies ด้วย requirements.txt
- แยกโปรเจกต์ด้วยสภาพแวดล้อมเสมือน
- กำหนดค่าเมล็ดสุ่มเพื่อให้รันซ้ำได้ผลเดิม
- บันทึกการตั้งค่าการรันทั้งหมด