อัลกอริธึม Amazon SageMaker ในตัวแบบใหม่สำหรับการสร้างแบบจำลองข้อมูลแบบตาราง: LightGBM, CatBoost, AutoGluon-Tabular และ TabTransformer

โหนดต้นทาง: 1541386

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

เริ่มตั้งแต่วันนี้ SageMaker มีอัลกอริธึมการสร้างแบบจำลองข้อมูลแบบตารางในตัวสี่ตัว: LightGBM, CatBoost, AutoGluon-Tabular และ TabTransformer คุณสามารถใช้อัลกอริธึมที่ได้รับความนิยมและล้ำสมัยเหล่านี้สำหรับทั้งงานการจำแนกแบบตารางและการถดถอย มีจำหน่ายผ่านทาง อัลกอริทึมในตัว บนคอนโซล SageMaker และผ่านทาง Amazon SageMaker JumpStart UI ภายใน สตูดิโอ Amazon SageMaker.

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

เอกสาร ตัวอย่างโน๊ตบุ๊ค แหล่ง
อัลกอริทึม LightGBM การถอยหลัง, การจัดหมวดหมู่ ไลท์จีบีเอ็ม
อัลกอริทึม CatBoost การถอยหลัง, การจัดหมวดหมู่ แคทบูสท์
อัลกอริทึม AutoGluon-Tabular การถอยหลัง, การจัดหมวดหมู่ AutoGluon-แบบตาราง
แท็บอัลกอริธึมของ Transformer การถอยหลัง, การจัดหมวดหมู่ แท็บ Transformer

ในส่วนต่อไปนี้ เราจะให้คำอธิบายทางเทคนิคสั้นๆ ของแต่ละอัลกอริทึม และตัวอย่างวิธีฝึกโมเดลผ่าน SageMaker SDK หรือ SageMaker Jumpstart

ไลท์จีบีเอ็ม

ไลท์จีบีเอ็ม เป็นการใช้งานโอเพ่นซอร์สที่ได้รับความนิยมและมีประสิทธิภาพของอัลกอริธึม Gradient Boosting Decision Tree (GBDT) GBDT เป็นอัลกอริธึมการเรียนรู้ภายใต้การดูแลที่พยายามทำนายตัวแปรเป้าหมายอย่างแม่นยำโดยการรวมชุดค่าประมาณจากชุดของแบบจำลองที่ง่ายกว่าและน้อยกว่า LightGBM ใช้เทคนิคเพิ่มเติมเพื่อปรับปรุงประสิทธิภาพและความสามารถในการปรับขนาดของ GBDT แบบเดิมอย่างมีนัยสำคัญ

แคทบูสท์

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

AutoGluon-แบบตาราง

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

แท็บ Transformer

แท็บ Transformer เป็นสถาปัตยกรรมการสร้างแบบจำลองข้อมูลแบบตารางลึกแบบใหม่สำหรับการเรียนรู้ภายใต้การดูแล TabTransformer สร้างขึ้นจาก Transformers ที่ให้ความสำคัญกับตนเอง เลเยอร์ Transformer เปลี่ยนการฝังของคุณสมบัติที่เป็นหมวดหมู่เป็นการฝังตามบริบทที่แข็งแกร่งเพื่อให้ได้ความแม่นยำในการทำนายที่สูงขึ้น นอกจากนี้ การฝังตามบริบทที่เรียนรู้จาก TabTransformer นั้นแข็งแกร่งอย่างมากต่อคุณสมบัติข้อมูลที่ขาดหายไปและมีเสียงรบกวน และให้การตีความที่ดีขึ้น รุ่นนี้เป็นผลิตภัณฑ์ของล่าสุด วิทยาศาสตร์อเมซอน วิจัย (กระดาษ และเป็นทางการ โพสต์บล็อก ที่นี่) และได้รับการยอมรับอย่างกว้างขวางจากชุมชน ML โดยมีการใช้งานบุคคลที่สามที่หลากหลาย (Kerasออโต้กลูออน,) และคุณสมบัติโซเชียลมีเดียเช่น ทวีตต่อข้อมูลศาสตร์, กลาง, และ Kaggle.

ประโยชน์ของอัลกอริทึมในตัวของ SageMaker

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

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

ตอนนี้เรามาดูวิธีฝึกหนึ่งในอัลกอริธึมในตัวเหล่านี้กัน

ฝึกอัลกอริทึมในตัวโดยใช้ SageMaker SDK

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

from sagemaker import image_uris, model_uris, script_uris train_model_id, train_model_version, train_scope = "lightgbm-classification-model", "*", "training"
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 model artifact; in the tabular case, the model is not pre-trained train_model_uri = model_uris.retrieve( model_id=train_model_id, model_version=train_model_version, model_scope=train_scope
)

พื้นที่ train_model_id เปลี่ยนเป็น lightgbm-regression-model ถ้าเราจัดการกับปัญหาการถดถอย รหัสสำหรับรุ่นอื่นๆ ทั้งหมดที่นำมาใช้ในโพสต์นี้แสดงอยู่ในตารางต่อไปนี้

รุ่น ประเภทของปัญหา รหัสรุ่น
ไลท์จีบีเอ็ม การจัดหมวดหมู่ lightgbm-classification-model
. การถอยหลัง lightgbm-regression-model
แคทบูสท์ การจัดหมวดหมู่ catboost-classification-model
. การถอยหลัง catboost-regression-model
AutoGluon-แบบตาราง การจัดหมวดหมู่ autogluon-classification-ensemble
. การถอยหลัง autogluon-regression-ensemble
แท็บ Transformer การจัดหมวดหมู่ pytorch-tabtransformerclassification-model
. การถอยหลัง pytorch-tabtransformerregression-model

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

import sagemaker
from sagemaker import hyperparameters sess = sagemaker.Session()
region = sess.boto_session.region_name # URI of sample training dataset
training_dataset_s3_path = f"s3:///jumpstart-cache-prod-{region}/training-datasets/tabular_multiclass/" # URI for output artifacts output_bucket = sess.default_bucket()
s3_output_location = f"s3://{output_bucket}/jumpstart-example-tabular-training/output" # Retrieve the default hyper-parameters for training
hyperparameters = hyperparameters.retrieve_default( model_id=train_model_id, model_version=train_model_version
) # [Optional] Override default hyperparameters with custom values
hyperparameters[ "num_boost_round"
] = "500" # The same hyperparameter is named as "iterations" for CatBoost

ในที่สุด เราก็สร้าง SageMaker Estimator ด้วยอินพุตที่ดึงมาทั้งหมดและเริ่มงานการฝึกอบรมด้วย .fitผ่าน URI ชุดข้อมูลการฝึกอบรมของเรา ดิ entry_point สคริปต์ที่ให้มามีชื่อว่า transfer_learning.py (เหมือนกันสำหรับงานและอัลกอริธึมอื่น ๆ ) และช่องข้อมูลอินพุตที่ส่งผ่านไปยัง .fit ต้องชื่อ training.

from sagemaker.estimator import Estimator
from sagemaker.utils import name_from_base # Unique training job name
training_job_name = name_from_base(f"built-in-example-{model_id}") # Create SageMaker Estimator instance
tc_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,
) # Launch a SageMaker Training job by passing s3 path of the training data
tc_estimator.fit({"training": training_dataset_s3_path}, logs=True)

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

ฝึกอัลกอริทึมในตัวโดยใช้ SageMaker JumpStart

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

สำหรับข้อมูลเพิ่มเติมโปรดดูที่ เรียกใช้การจัดประเภทข้อความด้วย Amazon SageMaker JumpStart โดยใช้ TensorFlow Hub และรุ่น Hugging Face.

สรุป

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

นำชุดข้อมูลของคุณเองมาลองใช้อัลกอริธึมใหม่เหล่านี้บน SageMaker และดูโน้ตบุ๊กตัวอย่างเพื่อใช้อัลกอริธึมในตัวที่มีให้ GitHub.


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

ดร.ซิน หวาง เป็นนักวิทยาศาสตร์ประยุกต์สำหรับอัลกอริทึมในตัวของ Amazon SageMaker JumpStart และ Amazon SageMaker เขามุ่งเน้นไปที่การพัฒนาอัลกอริธึมการเรียนรู้ของเครื่องที่ปรับขนาดได้ ความสนใจในงานวิจัยของเขาอยู่ในพื้นที่ของการประมวลผลภาษาธรรมชาติ การเรียนรู้เชิงลึกที่อธิบายได้บนข้อมูลแบบตาราง และการวิเคราะห์ที่มีประสิทธิภาพของการจัดกลุ่มพื้นที่และเวลาที่ไม่อิงพารามิเตอร์ เขาได้ตีพิมพ์บทความจำนวนมากในการประชุม ACL, ICDM, KDD และวารสาร Royal Statistical Society: Series A

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

ชูเอา มูร่า เป็นสถาปนิกโซลูชันผู้เชี่ยวชาญ AI/ML ที่ Amazon Web Services เขามุ่งเน้นไปที่กรณีการใช้งาน NLP เป็นส่วนใหญ่ และช่วยลูกค้าเพิ่มประสิทธิภาพการฝึกอบรมและการปรับใช้โมเดล Deep Learning เขายังเป็นผู้สนับสนุนโซลูชัน ML แบบ low-code และฮาร์ดแวร์เฉพาะสำหรับ ML

ประทับเวลา:

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

ฐานความรู้สำหรับ Amazon Bedrock รองรับพร้อมท์แบบกำหนดเองสำหรับ ReturneAndGenerate API และการกำหนดค่าจำนวนผลลัพธ์สูงสุดที่ดึงข้อมูลได้ อเมซอนเว็บเซอร์วิส

โหนดต้นทาง: 2540424
ประทับเวลา: เมษายน 9, 2024