โดยตัวโมเดลเองแล้ว โมเดลที่ฝึกฝนนั้นเป็นเพียงไฟล์ tar ที่ประกอบด้วยน้ำหนักของโมเดลและไม่ได้ทำหน้าที่ใดด้วยตัวเอง หากต้องการให้โมเดลมีประโยชน์และรับผลการคาดการณ์ คุณจะต้องนำโมเดลมาปรับใช้
การปรับใช้โมเดลใน Amazon SageMaker มี 2 วิธี ทั้งนี้ขึ้นอยู่กับวิธีที่คุณต้องการสร้างการอนุมาน:
- หากต้องการรับการอนุมานครั้งละหนึ่งรายการ ให้ตั้งค่าตำแหน่งข้อมูลถาวรโดยใช้บริการโฮสต์ Amazon SageMaker
- หากต้องการรับการอนุมานสำหรับชุดข้อมูลทั้งชุด ให้ใช้ Amazon SageMaker Batch Transform
แล็บนี้มีทั้งสองตัวเลือกเพื่อให้คุณเลือกวิธีที่เหมาะกับกรณีใช้งานของคุณมากที่สุด
ในกรณีของบริการโฮสต์ Amazon SageMaker ตำแหน่งข้อมูล HTTP แบบสดจะอยู่บนอินสแตนซ์ Amazon EC2 ที่คุณสามารถส่งผ่านส่วนข้อมูลไปถึงและรับการอนุมานได้
เมื่อปรับใช้โมเดล คุณจะเรียกวิธีการ ปรับใช้ ของอ็อบเจกต์ sagemaker.estimator.Estimator เมื่อเรียกวิธีการ ปรับใช้ คุณจะต้องระบุจำนวนและประเภทของอินสแตนซ์ ML ที่ต้องการใช้เพื่อโฮสต์ตำแหน่งข้อมูล
คัดลอกและวางโค้ดต่อไปนี้แล้วเลือก Run (เรียกใช้) เพื่อปรับใช้โมเดล
วิธีการปรับใช้นี้จะสร้างโมเดลที่สามารถปรับใช้ได้ กำหนดค่าตำแหน่งข้อมูลบริการโฮสต์ Amazon SageMaker และเปิดใช้ตำแหน่งข้อมูลเพื่อโฮสต์โมเดล
หากต้องการเรียกใช้การอนุมานกับตำแหน่งข้อมูล คุณจะต้องตรวจสอบให้แน่ใจว่าส่วนข้อมูลอินพุตได้รับการทำให้เป็นอนุกรมในรูปแบบที่โมเดลที่ฝึกฝนสามารถอ่านได้ และผลลัพธ์การอนุมานได้รับการแปลงกลับให้เป็นรูปแบบที่มนุษย์สามารถอ่านได้ ในโค้ดต่อไปนี้ คุณจะต้องใช้ csv_serializer และ json_deserializer ซึ่งส่งผ่านข้อมูลในรูปแบบ CSV (เป็นเวกเตอร์) ไปถึงโมเดลเพื่อผลิตเอาต์พุต JSON
คัดลอกและวางโค้ดต่อไปนี้ลงในเซลล์โค้ดแล้วเลือก Run (เรียกใช้)
ถัดไป ให้แยกเวกเตอร์หัวข้อสำหรับข้อมูลการฝึกฝนที่คุณจะใช้ในโมเดล K-NN
คัดลอกและวางโค้ดต่อไปนี้ลงในเซลล์โค้ดใหม่ แล้วเลือก Run (เรียกใช้)
predictions = []
for item in np.array(vectors.todense()):
np.shape(item)
results = ntm_predictor.predict(item)
predictions.append(np.array([prediction['topic_weights'] for prediction in results['predictions']]))
predictions = np.array([np.ndarray.flatten(x) for x in predictions])
topicvec = train_labels[newidx]
topicnames = [categories[x] for x in topicvec]
สำเร็จ! ตอนนี้คุณสามารถสำรวจเอาต์พุตของโมเดลได้
เมื่อใช้การแปลงเป็นชุด คุณสามารถเรียกใช้การอนุมานกับชุดข้อมูลได้ทีละชุด Amazon SageMaker จะสร้างโครงสร้างพื้นฐานในการคำนวณที่จำเป็นและจะทำลายเมื่องานชุดนั้นเสร็จสมบูรณ์แล้ว
โค้ดการแปลงเป็นชุดจะสร้างอ็อบเจกต์ sagemaker.transformer.Transformer จากโมเดลหัวข้อ จากนั้นจะเรียกใช้วิธีการแปลงของอ็อบเจกต์นั้นเพื่อสร้างงานแปลง เมื่อสร้างอ็อบเจกต์ sagemaker.transformer.Transformer คุณต้องระบุจำนวนและประเภทของอินสแตนซ์ที่จะใช้ในการดำเนินงานแปลงเป็นชุด รวมถึงตำแหน่งที่ตั้งใน Amazon S3 ที่คุณต้องการจัดเก็บการอนุมาน
หากต้องการเรียกใช้การอนุมานเป็นงานชุด ให้คัดลอกและวางโค้ดต่อไปนี้ลงในเซลล์โค้ดแล้วเลือก Run (เรียกใช้)
np.savetxt('trainvectors.csv',
vectors.todense(),
delimiter=',',
fmt='%i')
batch_prefix = '20newsgroups/batch'
train_s3 = sess.upload_data('trainvectors.csv',
bucket=bucket,
key_prefix='{}/train'.format(batch_prefix))
print(train_s3)
batch_output_path = 's3://{}/{}/test'.format(bucket, batch_prefix)
ntm_transformer = ntm.transformer(instance_count=1,
instance_type ='ml.m4.xlarge',
output_path=batch_output_path
)
ntm_transformer.transform(train_s3, content_type='text/csv', split_type='Line')
ntm_transformer.wait()
เมื่องานแปลงเสร็จเรียบร้อยแล้ว คุณสามารถใช้โค้ดต่อไปนี้ในการดาวน์โหลดเอาต์พุตกลับไปยังอินสแตนซ์โน้ตบุ๊กภายในเครื่องเพื่อตรวจสอบได้
สำเร็จ! โมเดลนี้แปลงเอกสารแต่ละชิ้นเป็นเวกเตอร์การฝึกฝนเชิงมิติ NUM_TOPICS ตอนนี้คุณสามารถสำรวจโมเดลหัวข้อได้แล้ว