เรียกใช้การปรับโมเดลอัตโนมัติด้วย Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

เรียกใช้การปรับโมเดลอัตโนมัติด้วย Amazon SageMaker JumpStart

ในเดือนธันวาคม 2020 AWS ประกาศ ความพร้อมทั่วไปของ Amazon SageMaker JumpStart, ความสามารถของ อเมซอน SageMaker ที่ช่วยให้คุณเริ่มต้นใช้งานแมชชีนเลิร์นนิง (ML) ได้อย่างรวดเร็วและง่ายดาย ในเดือนมีนาคม 2022 เราก็เช่นกัน ประกาศ การรองรับ API ใน JumpStart JumpStart ให้การปรับแต่งแบบละเอียดในคลิกเดียวและการปรับใช้โมเดลที่ได้รับการฝึกอบรมล่วงหน้าที่หลากหลายสำหรับงาน ML ยอดนิยม ตลอดจนการเลือกโซลูชันแบบ end-to-end ที่แก้ปัญหาทั่วไปทางธุรกิจ คุณลักษณะเหล่านี้ช่วยขจัดภาระหนักออกจากแต่ละขั้นตอนของกระบวนการ ML ทำให้ง่ายต่อการพัฒนาโมเดลคุณภาพสูงและลดเวลาในการปรับใช้

ในโพสต์นี้ เราสาธิตวิธีเรียกใช้การปรับแต่งโมเดลอัตโนมัติด้วย JumpStart

การปรับโมเดลอัตโนมัติของ SageMaker

ตามเนื้อผ้า วิศวกร ML ใช้วิธีการทดลองใช้และข้อผิดพลาดเพื่อค้นหาชุดไฮเปอร์พารามิเตอร์ที่เหมาะสม การทดลองใช้และข้อผิดพลาดเกี่ยวข้องกับการเรียกใช้งานหลายงานตามลำดับหรือพร้อมกันในขณะที่จัดเตรียมทรัพยากรที่จำเป็นในการดำเนินการทดสอบ

กับ การปรับโมเดลอัตโนมัติของ SageMakerวิศวกร ML และนักวิทยาศาสตร์ด้านข้อมูลสามารถลดงานที่ต้องใช้เวลามากในการเพิ่มประสิทธิภาพแบบจำลองของตน และปล่อยให้ SageMaker ทำการทดลอง SageMaker ใช้ประโยชน์จากความยืดหยุ่นของแพลตฟอร์ม AWS เพื่อเรียกใช้การจำลองการฝึกอบรมหลายชุดบนชุดข้อมูลอย่างมีประสิทธิภาพและพร้อมกัน และค้นหาไฮเปอร์พารามิเตอร์ที่ดีที่สุดสำหรับโมเดล

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

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

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

ปัจจุบัน JumpStart รองรับโน้ตบุ๊กตัวอย่าง 10 ตัวพร้อมการปรับโมเดลอัตโนมัติ นอกจากนี้ยังรองรับอัลกอริธึมยอดนิยมสี่ตัวสำหรับการสร้างแบบจำลองข้อมูลแบบตาราง งานและลิงก์ไปยังสมุดบันทึกตัวอย่างได้สรุปไว้ในตารางต่อไปนี้

งาน โมเดลฝึกหัด รองรับชุดข้อมูลที่กำหนดเอง กรอบงานที่รองรับ ตัวอย่างโน๊ตบุ๊ค
การจำแนกรูปภาพ ใช่ ใช่ PyTorch, เทนเซอร์โฟลว์ ข้อมูลเบื้องต้นเกี่ยวกับ JumpStart – การจัดประเภทรูปภาพ
การตรวจจับวัตถุ ใช่ ใช่ ไพทอร์ช, เทนเซอร์โฟลว์, MXNet ข้อมูลเบื้องต้นเกี่ยวกับ JumpStart – การตรวจจับวัตถุ
การแบ่งส่วนความหมาย ใช่ ใช่ MX เน็ต บทนำสู่ JumpStart – Semantic Segmentation
การจัดประเภทข้อความ ใช่ ใช่ TensorFlow ข้อมูลเบื้องต้นเกี่ยวกับ JumpStart – การจัดประเภทข้อความ
การจัดคู่ประโยค ใช่ ใช่ TensorFlow กอดใบหน้า บทนำสู่ JumpStart – การจัดประเภทคู่ประโยค
ตอบคำถาม ใช่ ใช่ ไพทอร์ช ข้อมูลเบื้องต้นเกี่ยวกับ JumpStart – การตอบคำถาม
การจำแนกตาราง ใช่ ใช่ LightGBM, CatBoost, XGBoost, ผู้เรียนเชิงเส้น ข้อมูลเบื้องต้นเกี่ยวกับ JumpStart – การจัดประเภทแบบตาราง – LightGBM, CatBoost
ข้อมูลเบื้องต้นเกี่ยวกับ JumpStart – การจัดประเภทแบบตาราง – XGBoost, Linear Learner
การถดถอยแบบตาราง ใช่ ใช่ LightGBM, CatBoost, XGBoost, ผู้เรียนเชิงเส้น ข้อมูลเบื้องต้นเกี่ยวกับ JumpStart – การถดถอยแบบตาราง – LightGBM, CatBoost
ข้อมูลเบื้องต้นเกี่ยวกับ JumpStart – การถดถอยแบบตาราง – XGBoost, Linear Learner

ภาพรวมโซลูชัน

เวิร์กโฟลว์ทางเทคนิคนี้ให้ภาพรวมของคุณสมบัติต่างๆ ของ Amazon Sagemaker และขั้นตอนที่จำเป็นในการปรับแต่งโมเดล JumpStart โดยอัตโนมัติ

เรียกใช้การปรับโมเดลอัตโนมัติด้วย Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

ในส่วนต่อไปนี้ เรามีคำแนะนำทีละขั้นตอนเกี่ยวกับวิธีการเรียกใช้การปรับโมเดลอัตโนมัติด้วย JumpStart โดยใช้อัลกอริธึม LightGBM เราจัดให้ สมุดบันทึก สำหรับคำแนะนำนี้

เราดำเนินการตามขั้นตอนระดับสูงดังต่อไปนี้:

  1. ดึงคอนเทนเนอร์อิมเมจและโมเดล Pre-trained ของ JumpStart
  2. ตั้งค่าไฮเปอร์พารามิเตอร์แบบคงที่
  3. กำหนดช่วงไฮเปอร์พารามิเตอร์ที่ปรับได้
  4. เริ่มต้นการปรับจูนโมเดลอัตโนมัติ
  5. เรียกใช้งานปรับแต่ง
  6. ปรับใช้โมเดลที่ดีที่สุดกับปลายทาง

ดึงคอนเทนเนอร์อิมเมจและโมเดล Pre-trained ของ JumpStart

ในส่วนนี้ เราเลือกแบบจำลองการจัดประเภท LightGBM สำหรับการปรับแต่งอย่างละเอียด เราใช้ประเภทอินสแตนซ์ ml.m5.xlarge ที่เรียกใช้โมเดล จากนั้นเราจะดึงคอนเทนเนอร์ Docker การฝึกอบรม แหล่งที่มาของอัลกอริธึมการฝึก และโมเดลที่ฝึกไว้ล่วงหน้า ดูรหัสต่อไปนี้:

training_instance_type = "ml.m5.xlarge" # Retrieve the docker image
train_image_uri = image_uris.retrieve(
    region=None,
    framework=None,
    model_id=train_model_id,
    model_version=train_model_version,
    image_scope=train_scope,
    instance_type=training_instance_type,
)
# Retrieve the training script
train_source_uri = script_uris.retrieve(
    model_id=train_model_id, model_version=train_model_version, script_scope=train_scope
)
# Retrieve the pre-trained model tarball to further fine-tune
train_model_uri = model_uris.retrieve(
    model_id=train_model_id, model_version=train_model_version, model_scope=train_scope
)

ตั้งค่าไฮเปอร์พารามิเตอร์แบบคงที่

ตอนนี้เราเรียกข้อมูลไฮเปอร์พารามิเตอร์เริ่มต้นสำหรับโมเดล LightGBM นี้ ตามที่กำหนดไว้ล่วงหน้าโดย JumpStart นอกจากนี้เรายังแทนที่ num_boost_round ไฮเปอร์พารามิเตอร์ที่มีค่ากำหนดเอง

# Retrieve the default hyper-parameters for fine-tuning the model
hyperparameters = hyperparameters.retrieve_default(
    model_id=train_model_id, model_version=train_model_version
)
# [Optional] Override default hyperparameters with custom values

กำหนดช่วงไฮเปอร์พารามิเตอร์ที่ปรับได้

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

hyperparameter_ranges = {
    "learning_rate": ContinuousParameter(1e-4, 1, scaling_type="Logarithmic"),
    "num_boost_round": IntegerParameter(2, 30),
    "early_stopping_rounds": IntegerParameter(2, 30),
    "num_leaves": IntegerParameter(10, 50),
    "feature_fraction": ContinuousParameter(0, 1),
    "bagging_fraction": ContinuousParameter(0, 1),
    "bagging_freq": IntegerParameter(1, 10),
    "max_depth": IntegerParameter(5, 30),
    "min_data_in_leaf": IntegerParameter(5, 50),
}

เริ่มต้นการปรับจูนโมเดลอัตโนมัติ

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

พื้นที่ HyperparameterTuner ยอมรับเป็นพารามิเตอร์ของออบเจ็กต์ Estimator, เมตริกเป้าหมายโดยพิจารณาจากชุดของไฮเปอร์พารามิเตอร์ที่ดีที่สุด, จำนวนงานการฝึกอบรมทั้งหมด (max_jobs) เพื่อเริ่มต้นสำหรับงานปรับแต่งไฮเปอร์พารามิเตอร์ และงานการฝึกแบบขนานสูงสุดที่จะรัน (max_parallel_jobs). งานการฝึกอบรมรันด้วยอัลกอริธึม LightGBM และค่าไฮเปอร์พารามิเตอร์ที่มีค่าน้อยที่สุด mlogloss เมตริกถูกเลือก สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการกำหนดค่าการปรับแต่งโมเดลอัตโนมัติ โปรดดูที่ แนวทางปฏิบัติที่ดีที่สุดสำหรับการปรับแต่งไฮเปอร์พารามิเตอร์.

# Create SageMaker Estimator instance
tabular_estimator = Estimator(
    role=aws_role,
    image_uri=train_image_uri,
    source_dir=train_source_uri,
    model_uri=train_model_uri,
    entry_point="transfer_learning.py",
    instance_count=1,
    instance_type=training_instance_type,
    max_run=360000,
    hyperparameters=hyperparameters,
    output_path=s3_output_location,
) tuner = HyperparameterTuner(
    estimator=tabular_estimator,
    objective_metric_name="multi_logloss",
    hyperparameter_ranges=hyperparameter_ranges,
    metric_definitions=[{"Name": "multi_logloss", "Regex": "multi_logloss: ([0-9\.]+)"}],
    strategy="Bayesian",
    max_jobs=10,
    max_parallel_jobs=2,
    objective_type="Minimize",
    base_tuning_job_name=training_job_name,
)

ในโค้ดก่อนหน้านี้ เราบอกให้จูนเนอร์ทำการทดสอบไม่เกิน 10 ครั้ง (max_jobs) และการทดลองพร้อมกันเพียงสองครั้งในแต่ละครั้ง (max_parallel_jobs). พารามิเตอร์ทั้งสองนี้ช่วยให้ต้นทุนและเวลาการฝึกอบรมของคุณอยู่ภายใต้การควบคุม

เรียกใช้งานปรับแต่ง

ในการเริ่มงานปรับแต่ง SageMaker เราเรียกเมธอด fit ของออบเจ็กต์จูนเนอร์ไฮเปอร์พารามิเตอร์และส่งผ่าน บริการจัดเก็บข้อมูลอย่างง่ายของ Amazon (Amazon S3) เส้นทางของข้อมูลการฝึกอบรม:

tuner.fit({"training": training_dataset_s3_path}, logs=True)

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

ปรับใช้โมเดลที่ดีที่สุดกับปลายทาง

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

tuner.deploy(
    initial_instance_count=1,
    instance_type=inference_instance_type,
    entry_point="inference.py",
    image_uri=deploy_image_uri,
    source_dir=deploy_source_uri,
    endpoint_name=endpoint_name,
    enable_network_isolation=True
)

ตอนนี้ เราสามารถทดสอบจุดปลายที่สร้างโดยการร้องขอการอนุมาน คุณสามารถปฏิบัติตามขั้นตอนที่เหลือได้ในเอกสารแนบ สมุดบันทึก.

สรุป

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

ในโพสต์นี้ เราแสดงให้เห็นคุณค่าของการรันการปรับโมเดลอัตโนมัติบนโมเดลที่ฝึกล่วงหน้าของ JumpStart โดยใช้ SageMaker API เราใช้อัลกอริธึม LightGBM และกำหนดงานการฝึกอบรมสูงสุด 10 งาน เรายังจัดเตรียมลิงก์ไปยังตัวอย่างโน้ตบุ๊กที่แสดงเฟรมเวิร์ก ML ที่สนับสนุนการเพิ่มประสิทธิภาพโมเดล JumpStart

สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับวิธีการปรับโมเดล JumpStart ให้เหมาะสมด้วยการปรับแต่งโมเดลอัตโนมัติ โปรดดูตัวอย่างของเรา สมุดบันทึก.


เกี่ยวกับผู้เขียน

เรียกใช้การปรับโมเดลอัตโนมัติด้วย Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.ดั๊ก เอ็มบาย่า เป็นสถาปนิกโซลูชันคู่ค้าอาวุโสที่มุ่งเน้นในด้านข้อมูลและการวิเคราะห์ Doug ทำงานอย่างใกล้ชิดกับคู่ค้าของ AWS ช่วยผสานรวมข้อมูลและโซลูชันการวิเคราะห์ในระบบคลาวด์

เรียกใช้การปรับโมเดลอัตโนมัติด้วย Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.กฤติ ชัยสีมา ราว เป็น Partner Solutions Architect ในทีม Scale-PSA Kruthi ดำเนินการตรวจสอบทางเทคนิคสำหรับพันธมิตรทำให้พวกเขาก้าวหน้าในเส้นทางพันธมิตร

เรียกใช้การปรับโมเดลอัตโนมัติด้วย Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.จานนิส มิโตรปูลอส เป็นวิศวกรพัฒนาซอฟต์แวร์สำหรับ SageMaker การปรับรุ่นอัตโนมัติ.

เรียกใช้การปรับโมเดลอัตโนมัติด้วย Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.ดร. Ashish Khetan เป็นนักวิทยาศาสตร์ประยุกต์อาวุโสด้วย Amazon SageMaker JumpStart และ  อัลกอริทึมในตัวของ Amazon SageMaker และช่วยพัฒนาอัลกอริธึมการเรียนรู้ของเครื่อง เขาเป็นนักวิจัยเชิงรุกด้านการเรียนรู้ของเครื่องและการอนุมานทางสถิติ และได้ตีพิมพ์บทความจำนวนมากในการประชุม NeurIPS, ICML, ICLR, JMLR และ ACL

ประทับเวลา:

เพิ่มเติมจาก AWS Machine Learning AWS