ถ่ายโอนการเรียนรู้สำหรับโมเดลการจัดประเภทรูปภาพ TensorFlow ใน Amazon SageMaker

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

เริ่มตั้งแต่วันนี้ SageMaker ได้จัดเตรียมอัลกอริธึมในตัวใหม่สำหรับการจัดประเภทรูปภาพ: การจัดประเภทรูปภาพ – TensorFlow. เป็นอัลกอริธึมการเรียนรู้ภายใต้การดูแลที่รองรับการถ่ายโอนการเรียนรู้สำหรับแบบจำลองล่วงหน้าจำนวนมากที่มีอยู่ใน ฮับ ​​TensorFlow. ใช้รูปภาพเป็นอินพุตและเอาต์พุตความน่าจะเป็นสำหรับแต่ละป้ายกำกับคลาส คุณสามารถปรับแต่งโมเดลที่ฝึกไว้ล่วงหน้าเหล่านี้ได้โดยใช้การเรียนรู้แบบโอนย้าย แม้ว่าจะไม่มีรูปภาพการฝึกหัดจำนวนมากก็ตาม มีให้บริการผ่าน SageMaker อัลกอริทึมในตัว ตลอดจนผ่านไฟล์ UI JumpStart ของ SageMaker ภายใน สตูดิโอ Amazon SageMaker. สำหรับข้อมูลเพิ่มเติม โปรดดูเอกสารประกอบ การจัดประเภทรูปภาพ – TensorFlow และสมุดตัวอย่าง ข้อมูลเบื้องต้นเกี่ยวกับ SageMaker TensorFlow – การจัดประเภทรูปภาพ.

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

วิธีใช้อัลกอริธึมการจำแนกรูปภาพ TensorFlow ใหม่

ส่วนนี้อธิบายวิธีการใช้อัลกอริธึมการจำแนกรูปภาพ TensorFlow กับ SageMaker Python SDK. สำหรับข้อมูลเกี่ยวกับวิธีการใช้งานจาก Studio UI โปรดดูที่ SageMaker JumpStart.

อัลกอริธึมรองรับการถ่ายโอนการเรียนรู้สำหรับโมเดลที่ได้รับการฝึกฝนล่วงหน้าซึ่งระบุไว้ใน รุ่น TensorFlow Hub. แต่ละรุ่นจะถูกระบุโดยที่ไม่ซ้ำกัน model_id. รหัสต่อไปนี้แสดงวิธีการปรับแต่ง MobileNet V2 1.00 224 ที่ระบุโดย model_id tensorflow-ic-imagenet-mobilenet-v2-100-224-classification-4 ในชุดข้อมูลการฝึกอบรมที่กำหนดเอง แต่ละ model_idเพื่อเปิดงานฝึกอบรม SageMaker ผ่าน ประมาณการ คลาสของ SageMaker Python SDK คุณต้องดึง URI อิมเมจ Docker, URI สคริปต์การฝึกอบรม และ URI ของโมเดลที่ผ่านการฝึกอบรมล่วงหน้าผ่านฟังก์ชันยูทิลิตี้ที่มีให้ใน SageMaker URI สคริปต์การฝึกอบรมประกอบด้วยโค้ดที่จำเป็นทั้งหมดสำหรับการประมวลผลข้อมูล การโหลดโมเดลที่ฝึกไว้ล่วงหน้า การฝึกโมเดล และการบันทึกโมเดลที่ผ่านการฝึกอบรมสำหรับการอนุมาน URI ของโมเดลที่ฝึกไว้ล่วงหน้าประกอบด้วยคำจำกัดความของสถาปัตยกรรมโมเดลที่ฝึกไว้ล่วงหน้าและพารามิเตอร์ของโมเดล โปรดทราบว่า URI อิมเมจ Docker และ URI สคริปต์การฝึกจะเหมือนกันสำหรับโมเดลการจัดประเภทอิมเมจ TensorFlow ทั้งหมด URI ของโมเดลที่ฝึกไว้ล่วงหน้านั้นจำเพาะสำหรับโมเดลนั้นๆ tarball รุ่นที่ได้รับการฝึกอบรมล่วงหน้าได้รับการดาวน์โหลดล่วงหน้าจาก TensorFlow Hub และบันทึกด้วยลายเซ็นรุ่นที่เหมาะสมใน บริการจัดเก็บข้อมูลอย่างง่ายของ Amazon บัคเก็ต (Amazon S3) เพื่อให้งานการฝึกอบรมทำงานในการแยกเครือข่าย ดูรหัสต่อไปนี้:

from sagemaker import image_uris, model_uris, script_uris
from sagemaker.estimator import Estimator

model_id, model_version = "tensorflow-ic-imagenet-mobilenet-v2-100-224-classification-4", "*"
training_instance_type = "ml.p3.2xlarge"

# Retrieve the docker image
train_image_uri = image_uris.retrieve(model_id=model_id,model_version=model_version,image_scope="training",instance_type=training_instance_type,region=None,framework=None)

# Retrieve the training script
train_source_uri = script_uris.retrieve(model_id=model_id, model_version=model_version, script_scope="training")

# Retrieve the pre-trained model tarball for transfer learning
train_model_uri = model_uris.retrieve(model_id=model_id, model_version=model_version, model_scope="training")

output_bucket = sess.default_bucket()
output_prefix = "jumpstart-example-ic-training"
s3_output_location = f"s3://{output_bucket}/{output_prefix}/output"

ด้วยสิ่งประดิษฐ์การฝึกอบรมเฉพาะรุ่นเหล่านี้ คุณสามารถสร้างวัตถุของ ประมาณการ ระดับ:

# Create SageMaker Estimator instance
tf_ic_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,
)

ถัดไป สำหรับการถ่ายโอนการเรียนรู้ในชุดข้อมูลที่คุณกำหนดเอง คุณอาจต้องเปลี่ยนค่าเริ่มต้นของไฮเปอร์พารามิเตอร์การฝึก ซึ่งแสดงอยู่ใน ไฮเปอร์พารามิเตอร์. คุณสามารถดึงพจนานุกรม Python ของไฮเปอร์พารามิเตอร์เหล่านี้ด้วยค่าเริ่มต้นได้โดยการเรียก hyperparameters.retrieve_defaultอัปเดตตามต้องการ แล้วส่งต่อไปยังคลาส Estimator โปรดทราบว่าค่าเริ่มต้นของไฮเปอร์พารามิเตอร์บางตัวจะแตกต่างกันสำหรับรุ่นต่างๆ สำหรับรุ่นใหญ่ ขนาดแบทช์เริ่มต้นจะเล็กกว่าและ train_only_top_layer ไฮเปอร์พารามิเตอร์ถูกตั้งค่าเป็น True. ไฮเปอร์พารามิเตอร์ Train_only_top_layer กำหนดว่าพารามิเตอร์รุ่นใดเปลี่ยนแปลงระหว่างกระบวนการปรับแต่ง ถ้า train_only_top_layer is Trueพารามิเตอร์ของชั้นการจำแนกประเภทจะเปลี่ยนไปและพารามิเตอร์ที่เหลือจะคงที่ในระหว่างกระบวนการปรับแต่ง ในทางกลับกัน ถ้า train_only_top_layer is False, พารามิเตอร์ทั้งหมดของโมเดลได้รับการปรับแต่งอย่างละเอียด ดูรหัสต่อไปนี้:

from sagemaker import hyperparameters
# Retrieve the default hyper-parameters for fine-tuning the model
hyperparameters = hyperparameters.retrieve_default(model_id=model_id, model_version=model_version)

# [Optional] Override default hyperparameters with custom values
hyperparameters["epochs"] = "5"

รหัสต่อไปนี้จัดเตรียมชุดข้อมูลการฝึกเริ่มต้นที่โฮสต์ในบัคเก็ต S3 เราให้ tf_flowers ชุดข้อมูลเป็นชุดข้อมูลเริ่มต้นสำหรับการปรับแต่งโมเดลอย่างละเอียด ชุดข้อมูลประกอบด้วยรูปภาพดอกไม้ห้าประเภท ดาวน์โหลดชุดข้อมูลจาก .แล้ว TensorFlow ภายใต้ ใบอนุญาต Apache 2.0.

# Sample training data is available in this bucket
training_data_bucket = f"jumpstart-cache-prod-{aws_region}"
training_data_prefix = "training-datasets/tf_flowers/"

training_dataset_s3_path = f"s3://{training_data_bucket}/{training_data_prefix}"

สุดท้าย ในการเปิดงานฝึกอบรม SageMaker เพื่อปรับแต่งโมเดล ให้โทร .fit บนวัตถุของคลาส Estimator ขณะส่งตำแหน่ง S3 ของชุดข้อมูลการฝึกอบรม:

# Launch a SageMaker Training job by passing s3 path of the training data
tf_ic_estimator.fit({"training": training_dataset_s3_path}, logs=True)

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

อินเทอร์เฟซอินพุต/เอาต์พุตสำหรับอัลกอริธึมการจำแนกรูปภาพ TensorFlow

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

  • อินพุต – ไดเร็กทอรีที่มีไดเร็กทอรีย่อยมากเท่ากับจำนวนคลาส ไดเรกทอรีย่อยแต่ละรายการควรมีรูปภาพที่เป็นของคลาสนั้นในรูปแบบ .jpg, .jpeg หรือ .png
  • เอาท์พุต – โมเดลที่ปรับแต่งอย่างละเอียดซึ่งสามารถปรับใช้สำหรับการอนุมานหรือสามารถฝึกเพิ่มเติมได้โดยใช้การฝึกอบรมแบบเพิ่มหน่วย ลายเซ็นก่อนการประมวลผลและหลังการประมวลผลจะถูกเพิ่มลงในโมเดลที่ปรับแต่งอย่างละเอียด โดยจะใช้อิมเมจ .jpg ดิบเป็นอินพุตและส่งคืนความน่าจะเป็นของคลาส ดัชนีคลาสการแมปไฟล์กับป้ายกำกับคลาสจะถูกบันทึกพร้อมกับโมเดล

ไดเร็กทอรีอินพุตควรมีลักษณะเหมือนตัวอย่างต่อไปนี้ หากข้อมูลการฝึกมีรูปภาพจากสองคลาส: roses และ dandelion. เส้นทาง S3 ควรมีลักษณะดังนี้ s3://bucket_name/input_directory/. หมายเหตุต่อท้าย / ต้องระบุ. ชื่อของโฟลเดอร์และ roses, dandelionและชื่อไฟล์ .jpg สามารถเป็นอะไรก็ได้ ไฟล์การแมปฉลากที่บันทึกพร้อมกับโมเดลที่ผ่านการฝึกอบรมบนบัคเก็ต S3 จะจับคู่ชื่อโฟลเดอร์กุหลาบและแดนดิไลออนกับดัชนีในรายการความน่าจะเป็นของคลาสที่โมเดลส่งออก การแมปเป็นไปตามลำดับตัวอักษรของชื่อโฟลเดอร์ ในตัวอย่างต่อไปนี้ ดัชนี 0 ในรายการเอาท์พุตแบบจำลองสอดคล้องกับ dandelionและดัชนี 1 สอดคล้องกับ roses.

input_directory
    |--roses
        |--abc.jpg
        |--def.jpg
    |--dandelion
        |--ghi.jpg
        |--jkl.jpg

การอนุมานด้วยอัลกอริธึมการจำแนกภาพ TensorFlow

โมเดลที่สร้างขึ้นสามารถโฮสต์สำหรับการอนุมานและสนับสนุนรูปแบบภาพที่เข้ารหัส .jpg, .jpeg และ .png เป็น application/x-image ชนิดของเนื้อหา. ภาพที่ป้อนจะถูกปรับขนาดโดยอัตโนมัติ ผลลัพธ์ประกอบด้วยค่าความน่าจะเป็น ป้ายกำกับคลาสสำหรับทุกคลาส และป้ายกำกับที่คาดคะเนซึ่งสอดคล้องกับดัชนีคลาสที่มีความน่าจะเป็นสูงสุด โดยเข้ารหัสในรูปแบบ JSON โมเดลการจัดประเภทรูปภาพ TensorFlow ประมวลผลรูปภาพเดียวต่อคำขอ และส่งออกเพียงบรรทัดเดียวใน JSON ต่อไปนี้เป็นตัวอย่างการตอบสนองใน JSON:

accept: application/json;verbose

 {"probabilities": [prob_0, prob_1, prob_2, ...],
  "labels":        [label_0, label_1, label_2, ...],
  "predicted_label": predicted_label}

If accept ถูกตั้งค่าเป็น application/jsonจากนั้นโมเดลจะแสดงความน่าจะเป็นเท่านั้น สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับการฝึกอบรมและการอนุมาน ดูตัวอย่างสมุดบันทึก ข้อมูลเบื้องต้นเกี่ยวกับ SageMaker TensorFlow – การจัดประเภทรูปภาพ.

ใช้อัลกอริทึมในตัวของ SageMaker ผ่าน JumpStart UI

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

สรุป

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


เกี่ยวกับผู้แต่ง

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

ถ่ายโอนการเรียนรู้สำหรับโมเดลการจัดหมวดหมู่รูปภาพ TensorFlow ใน Amazon SageMaker PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.ดร.วิเวก มะดัน เป็นนักวิทยาศาสตร์ประยุกต์กับ ทีม Amazon SageMaker JumpStart. เขาสำเร็จการศึกษาระดับปริญญาเอกจาก University of Illinois Urbana-Champaign และเป็นนักวิจัยหลังปริญญาเอกที่ Georgia Tech เขาเป็นนักวิจัยเชิงรุกด้านการเรียนรู้ของเครื่องและการออกแบบอัลกอริธึม และได้ตีพิมพ์บทความในการประชุม EMNLP, ICLR, COLT, FOCS และ SODA

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

ถ่ายโอนการเรียนรู้สำหรับโมเดลการจัดหมวดหมู่รูปภาพ TensorFlow ใน Amazon SageMaker PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.ราจู เพ็ญมัจฉา เป็นสถาปนิกอาวุโสด้านโซลูชัน AI/ML ที่ AWS เขาทำงานร่วมกับลูกค้าด้านการศึกษา รัฐบาล และองค์กรไม่แสวงหาผลกำไรในโครงการที่เกี่ยวข้องกับการเรียนรู้ของเครื่องและปัญญาประดิษฐ์ ช่วยพวกเขาสร้างโซลูชันโดยใช้ AWS เวลาไม่ช่วยเหลือลูกค้าก็ชอบเที่ยวที่ใหม่ๆ

ประทับเวลา:

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