ปัญญาประดิษฐ์ (AI) ได้กลายเป็นหัวข้อที่สำคัญและได้รับความนิยมในชุมชนเทคโนโลยี เมื่อ AI พัฒนาขึ้น เราได้เห็นโมเดลการเรียนรู้ของเครื่อง (ML) ประเภทต่างๆ เกิดขึ้น แนวทางหนึ่งเรียกว่า การสร้างแบบจำลองทั้งมวลได้รับความนิยมอย่างรวดเร็วในหมู่นักวิทยาศาสตร์ข้อมูลและผู้ปฏิบัติงาน ในโพสต์นี้ เราจะพูดถึงว่าโมเดลทั้งมวลคืออะไร และเหตุใดการใช้งานจึงมีประโยชน์ จากนั้นเราจะให้ตัวอย่างวิธีที่คุณสามารถฝึกอบรม เพิ่มประสิทธิภาพ และปรับใช้ชุดที่คุณกำหนดเองได้โดยใช้ อเมซอน SageMaker.
การเรียนรู้แบบ Ensemble หมายถึงการใช้โมเดลการเรียนรู้และอัลกอริธึมที่หลากหลายเพื่อให้คาดการณ์ได้แม่นยำมากกว่าอัลกอริทึมการเรียนรู้แบบเดี่ยวๆ ได้รับการพิสูจน์แล้วว่ามีประสิทธิภาพในการใช้งานที่หลากหลายและการตั้งค่าการเรียนรู้ เช่น ความปลอดภัยทางไซเบอร์ [1] และการตรวจจับการฉ้อโกง การสำรวจระยะไกล การทำนายขั้นตอนต่อไปที่ดีที่สุดในการตัดสินใจทางการเงิน การวินิจฉัยทางการแพทย์ และแม้แต่การมองเห็นคอมพิวเตอร์และการประมวลผลภาษาธรรมชาติ (NLP) งาน เรามักจะจัดหมวดหมู่วงดนตรีตามเทคนิคที่ใช้ในการฝึกฝน องค์ประกอบ และวิธีการรวมการคาดการณ์ต่างๆ เข้าด้วยกันเป็นข้ออนุมานเดียว หมวดหมู่เหล่านี้รวมถึง:
- การส่งเสริม – การฝึกอบรมผู้เรียนที่อ่อนแอหลายคนตามลำดับ โดยที่การทำนายที่ไม่ถูกต้องจากผู้เรียนคนก่อนในลำดับแต่ละครั้งจะได้รับน้ำหนักและข้อมูลที่สูงกว่าสำหรับผู้เรียนคนถัดไป ดังนั้นจึงสร้างผู้เรียนที่แข็งแกร่งขึ้น ตัวอย่าง ได้แก่ AdaBoost, การเร่งการไล่ระดับสี และ XGBoost
- การห่อ – ใช้หลายรุ่นเพื่อลดความแปรปรวนของรุ่นเดียว ตัวอย่าง ได้แก่ Random Forest และ Extra Trees
- ซ้อน (ผสม) – มักใช้แบบจำลองที่แตกต่างกัน โดยที่การทำนายของตัวประมาณค่าแต่ละตัวจะซ้อนกันและใช้เป็นข้อมูลป้อนเข้าสู่ตัวประมาณค่าสุดท้ายที่จัดการการทำนาย กระบวนการฝึกอบรมของผู้ประมาณขั้นสุดท้ายนี้มักใช้การตรวจสอบข้าม
มีหลายวิธีในการรวมการทำนายให้เป็นแบบเดียวที่แบบจำลองสร้างขึ้นในที่สุด เช่น การใช้ตัวประมาณค่าเมตาดาต้า เช่น ตัวเรียนรู้เชิงเส้น วิธีการลงคะแนนที่ใช้หลายแบบจำลองในการทำนายตามการลงคะแนนเสียงข้างมากสำหรับงานจำแนกประเภท หรือค่าเฉลี่ยทั้งมวลสำหรับการถดถอย
แม้ว่าไลบรารีและเฟรมเวิร์กหลายแห่งจะมีการใช้งานโมเดล Ensemble เช่น XGBoost, CatBoost หรือฟอเรสต์สุ่มของ scikit-learn แต่ในโพสต์นี้เรามุ่งเน้นไปที่การนำโมเดลของคุณเองมาใช้และใช้เป็นชุดการซ้อน อย่างไรก็ตาม แทนที่จะใช้ทรัพยากรเฉพาะสำหรับแต่ละโมเดล (งานการฝึกอบรมและการปรับแต่งโดยเฉพาะ และการโฮสต์จุดสิ้นสุดต่อโมเดล) เราจะฝึกอบรม ปรับแต่ง และปรับใช้ชุดคำสั่งที่กำหนดเอง (หลายรุ่น) โดยใช้งานการฝึกอบรม SageMaker เดียวและงานปรับแต่งเดียว และ ปรับใช้กับอุปกรณ์ปลายทางเดียว ซึ่งช่วยลดต้นทุนและค่าใช้จ่ายในการดำเนินงานที่เป็นไปได้
BYOE: นำวงดนตรีของคุณเองมา
มีหลายวิธีในการฝึกอบรมและปรับใช้โมเดล Ensemble ที่ต่างกันด้วย SageMaker: คุณสามารถฝึกฝนแต่ละโมเดลใน แยกงานฝึกอบรม และเพิ่มประสิทธิภาพแต่ละรุ่นแยกกันโดยใช้ การปรับโมเดลอัตโนมัติของ Amazon SageMaker. เมื่อโฮสต์โมเดลเหล่านี้ SageMaker มอบวิธีที่คุ้มค่ามากมายในการโฮสต์โมเดลหลายตัวบนโครงสร้างพื้นฐานของผู้เช่าเดียวกัน คุณสามารถดูรูปแบบการปรับใช้โดยละเอียดสำหรับการตั้งค่าประเภทนี้ได้ใน รูปแบบการโฮสต์แบบจำลองใน Amazon SageMaker ตอนที่ 1: รูปแบบการออกแบบทั่วไปสำหรับการสร้างแอปพลิเคชัน ML บน Amazon SageMaker. รูปแบบเหล่านี้รวมถึงการใช้จุดสิ้นสุดหลายจุด (สำหรับโมเดลที่ผ่านการฝึกอบรมแต่ละรุ่น) หรือจุดสิ้นสุดเดียว ปลายทางหลายรุ่นหรือแม้แต่อันเดียว ปลายทางแบบหลายคอนเทนเนอร์ โดยที่คอนเทนเนอร์สามารถเรียกใช้ทีละรายการหรือเชื่อมโยงในไปป์ไลน์ได้ โซลูชันทั้งหมดเหล่านี้มีตัวประมาณค่าเมตา (เช่น ใน AWS แลมบ์ดา ) ที่เรียกใช้แต่ละโมเดลและใช้ฟังก์ชันการผสมหรือการลงคะแนน
อย่างไรก็ตาม การรันงานการฝึกอบรมหลายงานอาจทำให้เกิดค่าใช้จ่ายในการดำเนินงานและค่าใช้จ่าย โดยเฉพาะอย่างยิ่งหากกลุ่มของคุณต้องการการฝึกอบรมโดยใช้ข้อมูลเดียวกัน ในทำนองเดียวกัน การโฮสต์โมเดลต่างๆ บนตำแหน่งข้อมูลหรือคอนเทนเนอร์ที่แยกจากกัน และการรวมผลลัพธ์การคาดการณ์เพื่อความแม่นยำที่ดีขึ้น จำเป็นต้องมีการเรียกใช้หลายครั้ง ดังนั้นจึงต้องมีการจัดการ ต้นทุน และความพยายามในการตรวจสอบเพิ่มเติม ตัวอย่างเช่น SageMaker รองรับ ประกอบโมเดล ML ทั้งหมดโดยใช้ Triton Inference Serverแต่โซลูชันนี้ต้องการให้รุ่นหรือชุดรุ่นได้รับการสนับสนุนโดยแบ็กเอนด์ Triton นอกจากนี้ ลูกค้ายังต้องการความพยายามเพิ่มเติมในการตั้งค่าเซิร์ฟเวอร์ Triton และการเรียนรู้เพิ่มเติมเพื่อทำความเข้าใจวิธีการทำงานของแบ็กเอนด์ Triton ที่แตกต่างกัน ดังนั้น ลูกค้าจึงชอบวิธีที่ตรงไปตรงมามากกว่าในการใช้โซลูชัน โดยที่พวกเขาต้องการส่งการร้องขอเพียงครั้งเดียวไปยังปลายทาง และมีความยืดหยุ่นในการควบคุมวิธีการรวมผลลัพธ์เพื่อสร้างผลลัพธ์สุดท้าย
ภาพรวมโซลูชัน
เพื่อจัดการกับข้อกังวลเหล่านี้ เราจะอธิบายตัวอย่างการฝึกอบรมทั้งมวลโดยใช้งานการฝึกอบรมเดียว การเพิ่มประสิทธิภาพไฮเปอร์พารามิเตอร์ของโมเดล และปรับใช้โดยใช้คอนเทนเนอร์เดียวไปยังตำแหน่งข้อมูลแบบไร้เซิร์ฟเวอร์ เราใช้สองรุ่นสำหรับสแต็ก Ensemble ของเรา: CatBoost และ XGBoost (ทั้งสองรุ่นเป็นการเพิ่มประสิทธิภาพ Ensemble) สำหรับข้อมูลของเรา เราใช้ ชุดข้อมูลโรคเบาหวาน [2] จากห้องสมุด scikit-learn: ประกอบด้วยคุณลักษณะ 10 ประการ (อายุ เพศ มวลกาย ความดันโลหิต และการวัดซีรั่มในเลือด 1 รายการ) และแบบจำลองของเราคาดการณ์การลุกลามของโรคใน XNUMX ปีหลังจากรวบรวมลักษณะพื้นฐาน (การถดถอย แบบอย่าง).
ที่เก็บโค้ดแบบเต็มสามารถพบได้ที่ GitHub.
ฝึกฝนโมเดลหลายแบบในงาน SageMaker เดียว
สำหรับการฝึกโมเดลของเรา เราใช้งานการฝึก SageMaker ในโหมดสคริปต์ ด้วยโหมดสคริปต์ คุณสามารถเขียนการฝึกอบรมแบบกำหนดเอง (และโค้ดการอนุมานในภายหลัง) ในขณะที่ใช้คอนเทนเนอร์เฟรมเวิร์ก SageMaker คอนเทนเนอร์เฟรมเวิร์กช่วยให้คุณใช้สภาพแวดล้อมสำเร็จรูปที่จัดการโดย AWS ซึ่งรวมถึงการกำหนดค่าและโมดูลที่จำเป็นทั้งหมด เพื่อสาธิตวิธีการปรับแต่งคอนเทนเนอร์เฟรมเวิร์กตามตัวอย่าง เราใช้คอนเทนเนอร์ SKLearn ที่สร้างไว้ล่วงหน้า ซึ่งไม่รวมแพ็คเกจ XGBoost และ CatBoost มีสองตัวเลือกในการเพิ่มแพ็คเกจเหล่านี้: อย่างใดอย่างหนึ่ง ขยายคอนเทนเนอร์ในตัว เพื่อติดตั้ง CatBoost และ XGBoost (จากนั้นปรับใช้เป็นคอนเทนเนอร์แบบกำหนดเอง) หรือใช้คุณสมบัติโหมดสคริปต์งานการฝึกอบรม SageMaker ซึ่งช่วยให้คุณจัดเตรียม requirements.txt
ไฟล์เมื่อสร้างตัวประมาณการฝึก งานการฝึกอบรม SageMaker จะติดตั้งไลบรารีที่อยู่ในรายการใน requirements.txt
ไฟล์ในระหว่างรันไทม์ ด้วยวิธีนี้ คุณไม่จำเป็นต้องจัดการที่เก็บอิมเมจ Docker ของคุณเอง และยังให้ความยืดหยุ่นมากขึ้นในการรันสคริปต์การฝึกที่ต้องใช้แพ็คเกจ Python เพิ่มเติม
บล็อกโค้ดต่อไปนี้แสดงโค้ดที่เราใช้เพื่อเริ่มการฝึกอบรม ที่ entry_point
พารามิเตอร์ชี้ไปที่สคริปต์การฝึกอบรมของเรา นอกจากนี้เรายังใช้คุณสมบัติที่น่าสนใจสองประการของ SageMaker SDK API:
- ขั้นแรก เราระบุเส้นทางในเครื่องไปยังไดเร็กทอรีต้นทางของเราและการขึ้นต่อกันใน
source_dir
และdependencies
พารามิเตอร์ตามลำดับ SDK จะบีบอัดและอัปโหลดไดเรกทอรีเหล่านั้นไปที่ บริการจัดเก็บข้อมูลอย่างง่ายของ Amazon (Amazon S3) และ SageMaker จะทำให้สามารถใช้งานได้บนอินสแตนซ์การฝึกอบรมภายใต้ไดเร็กทอรีการทำงาน/opt/ml/code
. - ประการที่สอง เราใช้ SDK
SKLearn
ออบเจ็กต์ตัวประมาณค่าที่มี Python และเวอร์ชันเฟรมเวิร์กที่เราต้องการ เพื่อให้ SageMaker จะดึงคอนเทนเนอร์ที่เกี่ยวข้อง นอกจากนี้เรายังได้กำหนดเมตริกการฝึกอบรมแบบกำหนดเอง 'validation:rmse
' ซึ่งจะถูกปล่อยออกมาในบันทึกการฝึกและบันทึกโดย SageMaker ต่อมา เราใช้หน่วยวัดนี้เป็นหน่วยวัดวัตถุประสงค์ในงานปรับแต่ง
hyperparameters = {"num_round": 6, "max_depth": 5}
estimator_parameters = {
"entry_point": "multi_model_hpo.py",
"source_dir": "code",
"dependencies": ["my_custom_library"],
"instance_type": training_instance_type,
"instance_count": 1,
"hyperparameters": hyperparameters,
"role": role,
"base_job_name": "xgboost-model",
"framework_version": "1.0-1",
"keep_alive_period_in_seconds": 60,
"metric_definitions":[
{'Name': 'validation:rmse', 'Regex': 'validation-rmse:(.*?);'}
]
}
estimator = SKLearn(**estimator_parameters)
ต่อไปเราจะเขียนสคริปต์การฝึกอบรมของเรา (multi_model_hpo.py). สคริปต์ของเราเป็นไปตามโฟลว์ง่ายๆ: จับภาพไฮเปอร์พารามิเตอร์ ซึ่งงานได้รับการกำหนดค่าและ ฝึกโมเดล CatBoost และ รุ่น XGBoost. เรายังดำเนินการก ครอสพับ k ฟังก์ชั่นการตรวจสอบ ดูรหัสต่อไปนี้:
if __name__ == "__main__":
parser = argparse.ArgumentParser() # Sagemaker specific arguments. Defaults are set in the environment variables.
parser.add_argument("--output-data-dir", type=str, default=os.environ["SM_OUTPUT_DATA_DIR"])
parser.add_argument("--model-dir", type=str, default=os.environ["SM_MODEL_DIR"])
parser.add_argument("--train", type=str, default=os.environ["SM_CHANNEL_TRAIN"])
parser.add_argument("--validation", type=str, default=os.environ["SM_CHANNEL_VALIDATION"])
.
.
.
"""
Train catboost
"""
K = args.k_fold
catboost_hyperparameters = {
"max_depth": args.max_depth,
"eta": args.eta,
}
rmse_list, model_catboost = cross_validation_catboost(train_df, K, catboost_hyperparameters)
.
.
.
"""
Train the XGBoost model
""" hyperparameters = {
"max_depth": args.max_depth,
"eta": args.eta,
"objective": args.objective,
"num_round": args.num_round,
} rmse_list, model_xgb = cross_validation(train_df, K, hyperparameters)
หลังจากที่แบบจำลองได้รับการฝึกฝนแล้ว เราจะคำนวณค่าเฉลี่ยของการคาดการณ์ทั้ง CatBoost และ XGBoost ผลลัพธ์, pred_mean
เป็นการทำนายครั้งสุดท้ายของวงดนตรีของเรา จากนั้นเราจะกำหนด mean_squared_error
เทียบกับชุดการตรวจสอบ val_rmse
ใช้สำหรับประเมินทั้งชุดระหว่างการฝึก โปรดสังเกตว่าเรายังพิมพ์ค่า RMSE ในรูปแบบที่เหมาะกับ regex ที่เราใช้ metric_definitions
. หลังจากนั้น การปรับแต่งโมเดลอัตโนมัติของ SageMaker จะใช้สิ่งนั้นเพื่อบันทึกการวัดตามวัตถุประสงค์ ดูรหัสต่อไปนี้:
pred_mean = np.mean(np.array([pred_catboost, pred_xgb]), axis=0)
val_rmse = mean_squared_error(y_validation, pred_mean, squared=False)
print(f"Final evaluation result: validation-rmse:{val_rmse}")
ในที่สุด สคริปต์ของเราจะบันทึกสิ่งประดิษฐ์ทั้งสองแบบจำลองลงในโฟลเดอร์เอาท์พุตที่อยู่ /opt/ml/model
.
เมื่องานการฝึกอบรมเสร็จสิ้น SageMaker จะจัดทำแพ็คเกจและคัดลอกเนื้อหาของ /opt/ml/model
ไดเร็กทอรีเป็นออบเจ็กต์เดี่ยวในรูปแบบ TAR ที่ถูกบีบอัดไปยังตำแหน่ง S3 ที่คุณระบุไว้ในการกำหนดค่างาน ในกรณีของเรา SageMaker จะรวมโมเดลทั้งสองไว้ในไฟล์ TAR และอัปโหลดไปยัง Amazon S3 เมื่อสิ้นสุดงานการฝึก ดูรหัสต่อไปนี้:
model_file_name = 'catboost-regressor-model.dump'
# Save CatBoost model
path = os.path.join(args.model_dir, model_file_name)
print('saving model file to {}'.format(path))
model.save_model(path)
.
.
.
# Save XGBoost model
model_location = args.model_dir + "/xgboost-model"
pickle.dump(model, open(model_location, "wb"))
logging.info("Stored trained model at {}".format(model_location))
โดยสรุป คุณควรสังเกตว่าในขั้นตอนนี้ เราได้ดาวน์โหลดข้อมูลหนึ่งครั้งและฝึกอบรมโมเดลสองโมเดลโดยใช้งานการฝึกเดียว
การปรับแต่งโมเดลทั้งมวลอัตโนมัติ
เนื่องจากเรากำลังสร้างคอลเลกชันของโมเดล ML การสำรวจการเรียงสับเปลี่ยนไฮเปอร์พารามิเตอร์ที่เป็นไปได้ทั้งหมดจึงไม่สามารถทำได้ ข้อเสนอของ SageMaker การปรับแต่งโมเดลอัตโนมัติ (AMT)ซึ่งค้นหาไฮเปอร์พารามิเตอร์ของโมเดลที่ดีที่สุดโดยมุ่งเน้นไปที่ชุดค่าผสมที่เป็นไปได้มากที่สุดภายในช่วงที่คุณระบุ (ขึ้นอยู่กับคุณที่จะกำหนดช่วงที่เหมาะสมในการสำรวจ) SageMaker รองรับวิธีการเพิ่มประสิทธิภาพหลายวิธี สำหรับคุณที่จะเลือกจาก
เราเริ่มต้นด้วยการกำหนดสองส่วนของกระบวนการเพิ่มประสิทธิภาพ: เมตริกวัตถุประสงค์และไฮเปอร์พารามิเตอร์ที่เราต้องการปรับแต่ง ในตัวอย่างของเรา เราใช้การตรวจสอบ RMSE เป็นตัวชี้วัดเป้าหมายและเราปรับแต่ง eta
และ max_depth
(สำหรับไฮเปอร์พารามิเตอร์อื่นๆ โปรดดูที่ XGBoost ไฮเปอร์พารามิเตอร์ และ ไฮเปอร์พารามิเตอร์ CatBoost):
from sagemaker.tuner import (
IntegerParameter,
ContinuousParameter,
HyperparameterTuner,
) hyperparameter_ranges = {
"eta": ContinuousParameter(0.2, 0.3),
"max_depth": IntegerParameter(3, 4)
}
metric_definitions = [{"Name": "validation:rmse", "Regex": "validation-rmse:([0-9.]+)"}]
objective_metric_name = "validation:rmse"
เรายังต้องมั่นใจในการ สคริปต์การฝึกอบรม ไฮเปอร์พารามิเตอร์ของเราไม่ได้ฮาร์ดโค้ดและถูกดึงมาจากอาร์กิวเมนต์รันไทม์ของ SageMaker:
catboost_hyperparameters = {
"max_depth": args.max_depth,
"eta": args.eta,
}
SageMaker ยังเขียนไฮเปอร์พารามิเตอร์ลงในไฟล์ JSON และสามารถอ่านได้จาก /opt/ml/input/config/hyperparameters.json
บนตัวอย่างการฝึกอบรม
เช่นเดียวกับ CatBoost เรายังจับไฮเปอร์พารามิเตอร์สำหรับโมเดล XGBoost ด้วย (โปรดสังเกตว่า objective
และ num_round
ไม่ได้รับการปรับแต่ง):
catboost_hyperparameters = {
"max_depth": args.max_depth,
"eta": args.eta,
}
สุดท้ายนี้ เราเปิดตัวงานการปรับแต่งไฮเปอร์พารามิเตอร์โดยใช้การกำหนดค่าเหล่านี้:
tuner = HyperparameterTuner(
estimator,
objective_metric_name,
hyperparameter_ranges,
max_jobs=4,
max_parallel_jobs=2,
objective_type='Minimize'
)
tuner.fit({"train": train_location, "validation": validation_location}, include_cls_metadata=False)
เมื่องานเสร็จสมบูรณ์ คุณสามารถดึงค่าสำหรับงานการฝึกที่ดีที่สุด (โดยมี RMSE น้อยที่สุด):
job_name=tuner.latest_tuning_job.name
attached_tuner = HyperparameterTuner.attach(job_name)
attached_tuner.describe()["BestTrainingJob"]
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ AMT โปรดดูที่ ทำการปรับโมเดลอัตโนมัติด้วย SageMaker.
การใช้งาน
ในการปรับใช้ชุดที่เรากำหนดเอง เราจำเป็นต้องจัดเตรียมสคริปต์เพื่อจัดการคำขอการอนุมานและกำหนดค่าโฮสติ้ง SageMaker ในตัวอย่างนี้ เราใช้ไฟล์เดียวที่มีทั้งโค้ดการฝึกอบรมและการอนุมาน (multi_model_hpo.py). SageMaker ใช้โค้ดภายใต้ if _ name _ == "_ main _"
สำหรับการฝึกอบรมและการปฏิบัติหน้าที่ model_fn
, input_fn
และ predict_fn
เมื่อปรับใช้และให้บริการโมเดล
สคริปต์การอนุมาน
เช่นเดียวกับการฝึกอบรม เราใช้คอนเทนเนอร์เฟรมเวิร์ก SageMaker SKLearn กับสคริปต์การอนุมานของเราเอง สคริปต์จะใช้สามวิธีที่ SageMaker ต้องการ
ครั้งแรกที่ model_fn
วิธีการอ่านไฟล์สิ่งประดิษฐ์แบบจำลองที่บันทึกไว้ของเราและโหลดลงในหน่วยความจำ ในกรณีของเรา เมธอดจะคืนค่าชุดของเราเป็น all_model
ซึ่งเป็นรายการ Python แต่คุณสามารถใช้พจนานุกรมที่มีชื่อรุ่นเป็นคีย์ได้
def model_fn(model_dir):
catboost_model = CatBoostRegressor()
catboost_model.load_model(os.path.join(model_dir, model_file_name))
model_file = "xgboost-model"
model = pickle.load(open(os.path.join(model_dir, model_file), "rb"))
all_model = [catboost_model, model]
return all_model
ประการที่สอง input_fn
วิธีการดีซีเรียลไลซ์ข้อมูลอินพุตคำขอที่จะส่งผ่านไปยังตัวจัดการการอนุมานของเรา สำหรับข้อมูลเพิ่มเติมเกี่ยวกับตัวจัดการอินพุต โปรดดูที่ การปรับคอนเทนเนอร์การอนุมานของคุณเอง.
def input_fn(input_data, content_type):
dtype=None
payload = StringIO(input_data)
return np.genfromtxt(payload, dtype=dtype, delimiter=",")
ประการที่สาม predict_fn
วิธีการมีหน้าที่รับคำทำนายจากแบบจำลอง วิธีการใช้แบบจำลองและข้อมูลที่ส่งคืน input_fn
เป็นพารามิเตอร์และส่งกลับการทำนายขั้นสุดท้าย ในตัวอย่างของเรา เราได้รับผลลัพธ์ CatBoost จากรายการโมเดลสมาชิกคนแรก (model[0]
) และ XGBoost จากสมาชิกคนที่สอง (model[1]
) และเราใช้ฟังก์ชันการผสมที่ส่งคืนค่าเฉลี่ยของการทำนายทั้งสอง:
def predict_fn(input_data, model):
predictions_catb = model[0].predict(input_data)
dtest = xgb.DMatrix(input_data)
predictions_xgb = model[1].predict(dtest,
ntree_limit=getattr(model, "best_ntree_limit", 0),
validate_features=False)
return np.mean(np.array([predictions_catb, predictions_xgb]), axis=0)
ตอนนี้เรามีโมเดลที่ผ่านการฝึกอบรมและสคริปต์การอนุมานแล้ว เราก็สามารถกำหนดค่าสภาพแวดล้อมเพื่อปรับใช้ชุดของเราได้
การอนุมานแบบไร้เซิร์ฟเวอร์ SageMaker
ถึงแม้ว่าจะมี ตัวเลือกการโฮสต์มากมายใน SageMakerในตัวอย่างนี้ เราใช้ตำแหน่งข้อมูลแบบไร้เซิร์ฟเวอร์ อุปกรณ์ปลายทางแบบไร้เซิร์ฟเวอร์จะเรียกใช้ทรัพยากรการประมวลผลโดยอัตโนมัติและปรับขนาดเข้าและออกโดยขึ้นอยู่กับการรับส่งข้อมูล สิ่งนี้จะช่วยขจัดภาระหนักในการจัดการเซิร์ฟเวอร์ ตัวเลือกนี้เหมาะอย่างยิ่งสำหรับปริมาณงานที่มีช่วงว่างระหว่างช่วงที่มีการจราจรหนาแน่น และสามารถทนต่อการสตาร์ทขณะเครื่องเย็นได้
การกำหนดค่าตำแหน่งข้อมูลแบบไร้เซิร์ฟเวอร์นั้นตรงไปตรงมา เนื่องจากเราไม่จำเป็นต้องเลือกประเภทอินสแตนซ์หรือจัดการนโยบายการปรับขนาด เราจำเป็นต้องจัดเตรียมพารามิเตอร์เพียงสองตัวเท่านั้น: ขนาดหน่วยความจำและการทำงานพร้อมกันสูงสุด ตำแหน่งข้อมูลแบบไร้เซิร์ฟเวอร์จะกำหนดทรัพยากรการประมวลผลตามสัดส่วนของหน่วยความจำที่คุณเลือกโดยอัตโนมัติ หากคุณเลือกขนาดหน่วยความจำที่ใหญ่ขึ้น คอนเทนเนอร์ของคุณจะสามารถเข้าถึง vCPU ได้มากขึ้น คุณควรเลือกขนาดหน่วยความจำปลายทางของคุณตามขนาดโมเดลของคุณเสมอ พารามิเตอร์ตัวที่สองที่เราจำเป็นต้องระบุคือการทำงานพร้อมกันสูงสุด สำหรับตำแหน่งข้อมูลเดียว พารามิเตอร์นี้สามารถตั้งค่าได้สูงสุด 200 (ในขณะที่เขียนนี้ ขีดจำกัดสำหรับจำนวนตำแหน่งข้อมูลแบบไร้เซิร์ฟเวอร์ทั้งหมดในภูมิภาคคือ 50) คุณควรทราบว่าการทำงานพร้อมกันสูงสุดสำหรับแต่ละตำแหน่งข้อมูลจะป้องกันไม่ให้ตำแหน่งข้อมูลนั้นรับการร้องขอทั้งหมดที่ได้รับอนุญาตสำหรับบัญชีของคุณ เนื่องจากการเรียกตำแหน่งข้อมูลใดๆ ที่เกินกว่าค่าสูงสุดจะถูกควบคุมปริมาณ (สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการทำงานพร้อมกันทั้งหมดสำหรับตำแหน่งข้อมูลแบบไร้เซิร์ฟเวอร์ทั้งหมดต่อภูมิภาค โปรดดูที่ ถึง จุดปลายและโควตาของ Amazon SageMaker).
from sagemaker.serverless.serverless_inference_config import ServerlessInferenceConfig
serverless_config = ServerlessInferenceConfig(
memory_size_in_mb=6144,
max_concurrency=1,
)
ตอนนี้เราได้กำหนดค่าตำแหน่งข้อมูลแล้ว ในที่สุดเราก็สามารถนำโมเดลที่เลือกไว้ในงานการปรับให้เหมาะสมสำหรับพารามิเตอร์ไฮเปอร์พารามิเตอร์ของเราไปใช้ในที่สุด:
estimator=attached_tuner.best_estimator()
predictor = estimator.deploy(serverless_inference_config=serverless_config)
ทำความสะอาด
แม้ว่าตำแหน่งข้อมูลแบบไร้เซิร์ฟเวอร์จะมีค่าใช้จ่ายเป็นศูนย์เมื่อไม่ได้ใช้งาน แต่เมื่อคุณเรียกใช้ตัวอย่างนี้เสร็จแล้ว คุณควรแน่ใจว่าได้ลบตำแหน่งข้อมูลแล้ว:
predictor.delete_endpoint(predictor.endpoint)
สรุป
ในโพสต์นี้ เราได้กล่าวถึงแนวทางหนึ่งในการฝึกอบรม เพิ่มประสิทธิภาพ และปรับใช้ชุดคำสั่งแบบกำหนดเอง เราได้ให้รายละเอียดเกี่ยวกับกระบวนการใช้งานการฝึกเดียวเพื่อฝึกโมเดลหลายแบบ วิธีใช้การปรับแต่งโมเดลอัตโนมัติเพื่อเพิ่มประสิทธิภาพไฮเปอร์พารามิเตอร์ทั้งมวล และวิธีการปรับใช้ตำแหน่งข้อมูลแบบไร้เซิร์ฟเวอร์จุดเดียวที่ผสมผสานการอนุมานจากหลายรุ่น
การใช้วิธีนี้ช่วยแก้ปัญหาต้นทุนและการดำเนินงานที่อาจเกิดขึ้น ต้นทุนของงานการฝึกอบรมขึ้นอยู่กับทรัพยากรที่คุณใช้ตลอดระยะเวลาการใช้งาน ด้วยการดาวน์โหลดข้อมูลเพียงครั้งเดียวสำหรับการฝึกทั้งสองรุ่น เราจะลดขั้นตอนการดาวน์โหลดข้อมูลของงานลงครึ่งหนึ่งและปริมาณที่ใช้ซึ่งจัดเก็บข้อมูล ซึ่งจะช่วยลดต้นทุนโดยรวมของงานการฝึกอบรม นอกจากนี้ งาน AMT ยังรันงานฝึกอบรมสี่งาน โดยแต่ละงานมีเวลาและพื้นที่จัดเก็บลดลงตามที่กล่าวข้างต้น ดังนั้นจึงประหยัดต้นทุนได้ 4 เท่า! สำหรับการปรับใช้โมเดลบนตำแหน่งข้อมูลแบบไร้เซิร์ฟเวอร์ เนื่องจากคุณต้องชำระค่าบริการตามปริมาณข้อมูลที่ประมวลผล ด้วยการเรียกใช้ตำแหน่งข้อมูลเพียงครั้งเดียวสำหรับสองรุ่น คุณจึงชำระค่าบริการข้อมูล I/O ครึ่งหนึ่ง
แม้ว่าโพสต์นี้จะแสดงข้อดีของสองโมเดลเท่านั้น แต่คุณสามารถใช้วิธีนี้เพื่อฝึกฝน ปรับแต่ง และปรับใช้โมเดลทั้งมวลจำนวนมากเพื่อให้เห็นผลที่ดียิ่งขึ้น
อ้างอิง
[1] ราช คูมาร์, พี. อรุณ; เซลวากุมาร์, เอส. (2011). “การตรวจจับการโจมตีบริการปฏิเสธแบบกระจายโดยใช้ชุดตัวแยกประเภทประสาท” การสื่อสารคอมพิวเตอร์ 34 (11): 1328–1341. ดอย:10.1016/j.com.2011.01.012.
(2) Bradley Efron, Trevor Hastie, Iain Johnstone และ Robert Tibshirani (2004) "การถดถอยมุมน้อยที่สุด" พงศาวดารของสถิติ (พร้อมการสนทนา), 407-499 (https://web.stanford.edu/~hastie/Papers/LARS/LeastAngle_2002.pdf)
เกี่ยวกับผู้เขียน
เมลานี หลี่, PhDเป็นผู้เชี่ยวชาญด้าน AI/ML อาวุโส TAM ที่ AWS ในซิดนีย์ ออสเตรเลีย เธอช่วยลูกค้าระดับองค์กรในการสร้างโซลูชันที่ใช้ประโยชน์จากเครื่องมือ AI/ML ที่ล้ำสมัยบน AWS และให้คำแนะนำเกี่ยวกับการออกแบบสถาปัตยกรรมและการนำโซลูชันแมชชีนเลิร์นนิงไปใช้ด้วยแนวทางปฏิบัติที่ดีที่สุด ในเวลาว่างเธอชอบที่จะสำรวจธรรมชาติกลางแจ้งและใช้เวลากับครอบครัวและเพื่อนฝูง
ยูริ โรเซนเบิร์ก เป็นผู้จัดการด้านเทคนิคผู้เชี่ยวชาญด้าน AI & ML ประจำยุโรป ตะวันออกกลาง และแอฟริกา Uri ซึ่งตั้งอยู่ในประเทศอิสราเอลทำงานเพื่อเพิ่มขีดความสามารถให้กับลูกค้าระดับองค์กรในการออกแบบ สร้าง และดำเนินการปริมาณงาน ML ในวงกว้าง ในเวลาว่าง เขาสนุกกับการปั่นจักรยาน เดินป่า และลด RMSEs ให้เหลือน้อยที่สุด
- เนื้อหาที่ขับเคลื่อนด้วย SEO และการเผยแพร่ประชาสัมพันธ์ รับการขยายวันนี้
- PlatoData.Network Vertical Generative Ai เพิ่มพลังให้กับตัวเอง เข้าถึงได้ที่นี่.
- เพลโตไอสตรีม. Web3 อัจฉริยะ ขยายความรู้ เข้าถึงได้ที่นี่.
- เพลโตESG. ยานยนต์ / EVs, คาร์บอน, คลีนเทค, พลังงาน, สิ่งแวดล้อม แสงอาทิตย์, การจัดการของเสีย. เข้าถึงได้ที่นี่.
- BlockOffsets การปรับปรุงการเป็นเจ้าของออฟเซ็ตด้านสิ่งแวดล้อมให้ทันสมัย เข้าถึงได้ที่นี่.
- ที่มา: https://aws.amazon.com/blogs/machine-learning/efficiently-train-tune-and-deploy-custom-ensembles-using-amazon-sagemaker/
- :มี
- :เป็น
- :ไม่
- :ที่ไหน
- ][หน้า
- $ ขึ้น
- 1
- 10
- 100
- 11
- 200
- 2011
- 50
- 60
- 7
- a
- เกี่ยวกับเรา
- เข้า
- ตาม
- ลงชื่อเข้าใช้
- ความถูกต้อง
- ถูกต้อง
- เพิ่ม
- เพิ่มเติม
- นอกจากนี้
- ที่อยู่
- แอฟริกา
- หลังจาก
- กับ
- อายุ
- AI
- AI / ML
- ขั้นตอนวิธี
- อัลกอริทึม
- ทั้งหมด
- อนุญาตให้
- ช่วยให้
- ด้วย
- เสมอ
- อเมซอน
- อเมซอน SageMaker
- Amazon Web Services
- ในหมู่
- จำนวน
- an
- และ
- ใด
- การใช้งาน
- เข้าใกล้
- เป็น
- ข้อโต้แย้ง
- AS
- At
- โจมตี
- ออสเตรเลีย
- อัตโนมัติ
- อัตโนมัติ
- ใช้ได้
- ค่าเฉลี่ย
- ไป
- AWS
- แบ็กเอนด์
- ตาม
- baseline
- BE
- เพราะ
- กลายเป็น
- รับ
- กำลัง
- เป็นประโยชน์
- ประโยชน์ที่ได้รับ
- ที่ดีที่สุด
- ปฏิบัติที่ดีที่สุด
- ดีกว่า
- ระหว่าง
- เกิน
- การผสม
- ผสม
- ปิดกั้น
- เลือด
- ความดันโลหิต
- ร่างกาย
- การส่งเสริม
- ทั้งสอง
- นำมาซึ่ง
- การนำ
- สร้าง
- การก่อสร้าง
- built-in
- การรวมกลุ่ม
- แต่
- by
- คำนวณ
- CAN
- จับ
- ถูกจับกุม
- กรณี
- หมวดหมู่
- ถูกล่ามโซ่
- โหลด
- Choose
- การจัดหมวดหมู่
- รหัส
- ผู้สมัครที่ไม่รู้จัก
- ชุด
- รวม
- การรวมกัน
- ร่วมกัน
- คมนาคม
- ชุมชน
- จับใจ
- สมบูรณ์
- คำนวณ
- คอมพิวเตอร์
- วิสัยทัศน์คอมพิวเตอร์
- ความกังวลเกี่ยวกับ
- องค์ประกอบ
- การกำหนดค่า
- ประกอบ
- ภาชนะ
- ภาชนะบรรจุ
- เนื้อหา
- ควบคุม
- ตรงกัน
- ราคา
- ค่าใช้จ่ายที่มีประสิทธิภาพ
- ปกคลุม
- การสร้าง
- ประเพณี
- ลูกค้า
- ลูกค้า
- ปรับแต่ง
- cybersecurity
- ข้อมูล
- การตัดสินใจ
- ทุ่มเท
- ค่าเริ่มต้น
- กำหนด
- กำหนด
- การกำหนด
- สาธิต
- Denial of Service
- ทั้งนี้ขึ้นอยู่กับ
- ปรับใช้
- ปรับใช้
- การใช้งาน
- ออกแบบ
- รูปแบบการออกแบบ
- รายละเอียด
- การตรวจพบ
- กำหนด
- ต่าง
- ไดเรกทอรี
- สนทนา
- การสนทนา
- โรค
- หลาย
- นักเทียบท่า
- ไม่
- Dont
- ดาวน์โหลด
- กอง
- ระยะเวลา
- ในระหว่าง
- แต่ละ
- ตะวันออก
- ผล
- ที่มีประสิทธิภาพ
- อย่างมีประสิทธิภาพ
- ความพยายาม
- ทั้ง
- ออกมา
- ให้อำนาจ
- ทำให้สามารถ
- ปลาย
- ปลายทาง
- ทำให้มั่นใจ
- Enterprise
- สิ่งแวดล้อม
- สภาพแวดล้อม
- โดยเฉพาะอย่างยิ่ง
- ยุโรป
- การประเมินผล
- แม้
- วิวัฒน์
- ตัวอย่าง
- ตัวอย่าง
- สำรวจ
- สำรวจ
- พิเศษ
- ครอบครัว
- ลักษณะ
- คุณสมบัติ
- เนื้อไม่มีมัน
- ไฟล์
- สุดท้าย
- ในที่สุด
- ทางการเงิน
- ชื่อจริง
- ความยืดหยุ่น
- ไหล
- โฟกัส
- โดยมุ่งเน้น
- ดังต่อไปนี้
- ดังต่อไปนี้
- สำหรับ
- ป่า
- รูป
- พบ
- สี่
- กรอบ
- กรอบ
- การหลอกลวง
- การตรวจจับการฉ้อโกง
- เพื่อน
- ราคาเริ่มต้นที่
- เต็ม
- ฟังก์ชัน
- ฟังก์ชั่น
- นอกจากนี้
- ได้รับ
- ดึงดูด
- สร้าง
- ได้รับ
- ได้รับ
- กำหนด
- มากขึ้น
- คำแนะนำ
- ครึ่ง
- จัดการ
- จัดการ
- มี
- he
- หนัก
- ยกของหนัก
- จะช่วยให้
- เธอ
- สูงกว่า
- ของเขา
- เจ้าภาพ
- โฮสติ้ง
- สรุป ความน่าเชื่อถือของ Olymp Trade?
- ทำอย่างไร
- อย่างไรก็ตาม
- HTML
- ที่ http
- HTTPS
- การเพิ่มประสิทธิภาพไฮเปอร์พารามิเตอร์
- การปรับแต่งไฮเปอร์พารามิเตอร์
- ในอุดมคติ
- Idle
- if
- ภาพ
- การดำเนินการ
- การดำเนินการ
- การดำเนินการ
- สำคัญ
- in
- ประกอบด้วย
- รวมถึง
- เป็นรายบุคคล
- เป็นรายบุคคล
- ข้อมูล
- โครงสร้างพื้นฐาน
- อินพุต
- ติดตั้ง
- ตัวอย่าง
- แทน
- Intelligence
- เข้าไป
- แนะนำ
- เปิดตัว
- เรียก
- จะเรียก
- อิสราเอล
- ปัญหา
- IT
- การสัมภาษณ์
- งาน
- jpg
- JSON
- กุญแจ
- ชนิด
- ที่รู้จักกัน
- ภาษา
- ที่มีขนาดใหญ่
- ต่อมา
- เปิดตัว
- การเรียนรู้
- การใช้ประโยชน์
- Li
- ห้องสมุด
- ห้องสมุด
- facelift
- LIMIT
- รายการ
- จดทะเบียน
- โหลด
- ในประเทศ
- ที่ตั้งอยู่
- ที่ตั้ง
- การเข้าสู่ระบบ
- LOOKS
- รัก
- เครื่อง
- เรียนรู้เครื่อง
- หลัก
- ส่วนใหญ่
- ทำ
- จัดการ
- การจัดการ
- การจัดการ
- ผู้จัดการ
- การจัดการ
- มวล
- สูงสุด
- หมายความ
- วัด
- ทางการแพทย์
- สมาชิก
- หน่วยความจำ
- ผสาน
- วิธี
- วิธีการ
- เมตริก
- กลาง
- ตะวันออกกลาง
- อาจ
- ต่ำสุด
- การลด
- ML
- โหมด
- แบบ
- โมเดล
- โมดูล
- การตรวจสอบ
- ข้อมูลเพิ่มเติม
- มากที่สุด
- หลาย
- ชื่อ
- ชื่อ
- โดยธรรมชาติ
- ประมวลผลภาษาธรรมชาติ
- ธรรมชาติ
- จำเป็น
- จำเป็นต้อง
- ถัดไป
- NLP
- สังเกต..
- จำนวน
- มากมาย
- วัตถุ
- วัตถุประสงค์
- of
- เสนอ
- มักจะ
- on
- ครั้งเดียว
- ONE
- เพียง
- ทำงาน
- การดำเนินงาน
- การเพิ่มประสิทธิภาพ
- เพิ่มประสิทธิภาพ
- การเพิ่มประสิทธิภาพ
- ตัวเลือกเสริม (Option)
- Options
- or
- OS
- อื่นๆ
- ของเรา
- ออก
- กลางแจ้ง
- เอาท์พุต
- ทั้งหมด
- ของตนเอง
- แพคเกจ
- พารามิเตอร์
- พารามิเตอร์
- ส่วนหนึ่ง
- ส่วน
- ผ่าน
- เส้นทาง
- แบบแผน
- รูปแบบ
- ชำระ
- รูปแบบไฟล์ PDF
- ต่อ
- งวด
- ระยะ
- ท่อ
- เพลโต
- เพลโตดาต้าอินเทลลิเจนซ์
- เพลโตดาต้า
- จุด
- นโยบาย
- ยอดนิยม
- เป็นไปได้
- โพสต์
- ที่มีศักยภาพ
- การปฏิบัติ
- ทำนาย
- คำทำนาย
- การคาดการณ์
- Predictor
- คาดการณ์
- ชอบ
- ที่ต้องการ
- ความดัน
- ป้องกัน
- ก่อน
- พิมพ์
- ขั้นตอนการ
- กระบวนการ
- แปรรูปแล้ว
- การประมวลผล
- ก่อ
- ในอาชีพ
- แวว
- ที่พิสูจน์แล้ว
- ให้
- ให้
- หลาม
- สุ่ม
- อย่างรวดเร็ว
- อ่าน
- ลด
- ลดลง
- ลด
- หมายถึง
- พิจารณา
- นิพจน์ทั่วไป
- ภูมิภาค
- รีโมท
- กรุ
- แสดง
- ขอ
- จำเป็นต้องใช้
- ต้อง
- แหล่งข้อมูล
- ตามลำดับ
- รับผิดชอบ
- ผล
- ผลสอบ
- กลับ
- รับคืน
- ขวา
- โรเบิร์ต
- บทบาท
- วิ่ง
- วิ่ง
- s
- sagemaker
- การปรับโมเดลอัตโนมัติของ SageMaker
- เดียวกัน
- ลด
- ประหยัด
- ขนาด
- ปรับ
- นักวิทยาศาสตร์
- scikit เรียนรู้
- สคริปต์
- SDK
- ที่สอง
- เห็น
- เห็น
- เลือก
- ส่ง
- ระดับอาวุโส
- แยก
- ลำดับ
- เซรุ่ม
- serverless
- เซิร์ฟเวอร์
- บริการ
- บริการ
- การให้บริการ
- ชุด
- การตั้งค่า
- หลาย
- เพศ
- เธอ
- น่า
- แสดงให้เห็นว่า
- แสดงให้เห็นว่า
- เหมือนกับ
- ง่าย
- เดียว
- หก
- ขนาด
- So
- ทางออก
- โซลูชัน
- แก้ปัญหา
- แหล่ง
- ผู้เชี่ยวชาญ
- โดยเฉพาะ
- ที่ระบุไว้
- ใช้จ่าย
- กอง
- ซ้อนกัน
- การสุม
- Stanford
- เริ่มต้น
- เริ่มต้น
- รัฐของศิลปะ
- สถิติ
- ขั้นตอน
- การเก็บรักษา
- เก็บไว้
- ร้านค้า
- ซื่อตรง
- แข็งแกร่ง
- อย่างเช่น
- สรุป
- ที่สนับสนุน
- รองรับ
- แน่ใจ
- ซิดนีย์
- ใช้เวลา
- การ
- เป้า
- งาน
- วิชาการ
- เทคนิค
- เทคโนโลยี
- ผู้เช่า
- กว่า
- ที่
- พื้นที่
- ของพวกเขา
- พวกเขา
- แล้วก็
- ที่นั่น
- ดังนั้น
- ดังนั้น
- ล้อยางขัดเหล่านี้ติดตั้งบนแกน XNUMX (มม.) ผลิตภัณฑ์นี้ถูกผลิตในหลายรูปทรง และหลากหลายเบอร์ความแน่นหนาของปริมาณอนุภาคขัดของมัน จะทำให้ท่านได้รับประสิทธิภาพสูงในการขัดและการใช้งานที่ยาวนาน
- พวกเขา
- นี้
- เหล่านั้น
- แต่?
- สาม
- ตลอด
- เวลา
- ครั้ง
- ไปยัง
- ร่วมกัน
- เครื่องมือ
- หัวข้อ
- รวม
- แรงฉุด
- การจราจร
- รถไฟ
- ผ่านการฝึกอบรม
- การฝึกอบรม
- ต้นไม้
- เทรเวอร์
- ไทรทัน
- สอง
- ชนิด
- ภายใต้
- เข้าใจ
- การใช้
- ใช้
- มือสอง
- ใช้
- การใช้
- การตรวจสอบ
- ความคุ้มค่า
- ความคุ้มค่า
- ต่างๆ
- รุ่น
- วิสัยทัศน์
- ปริมาณ
- การออกเสียง
- ต้องการ
- คือ
- ทาง..
- วิธี
- we
- เว็บ
- บริการเว็บ
- น้ำหนัก
- คือ
- อะไร
- เมื่อ
- ที่
- ในขณะที่
- ทั้งหมด
- ทำไม
- จะ
- กับ
- ภายใน
- งาน
- การทำงาน
- โรงงาน
- เขียน
- การเขียน
- XGBoost
- ปี
- คุณ
- ของคุณ
- ลมทะเล
- เป็นศูนย์