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

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

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

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

วิธีใช้อัลกอริธึมการจัดประเภทข้อความ TensorFlow ใหม่

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

อัลกอริธึมรองรับการถ่ายโอนการเรียนรู้สำหรับโมเดลที่ได้รับการฝึกฝนล่วงหน้าซึ่งระบุไว้ใน โมเดลเทนเซอร์โฟลว์. แต่ละรุ่นจะถูกระบุโดยที่ไม่ซ้ำกัน model_id. รหัสต่อไปนี้แสดงวิธีการปรับแต่งโมเดลพื้นฐาน BERT ที่ระบุโดย model_id tensorflow-tc-bert-en-uncased-L-12-H-768-A-12-2 ในชุดข้อมูลการฝึกอบรมที่กำหนดเอง แต่ละ model_id, เพื่อเริ่มงานฝึกอบรม SageMaker ผ่าน ประมาณการ คลาสของ SageMaker Python SDK คุณต้องดึง URI อิมเมจ Docker, URI สคริปต์การฝึก และ URI ของโมเดลที่ฝึกไว้ล่วงหน้าผ่านฟังก์ชันยูทิลิตี้ที่มีให้ใน SageMaker URI สคริปต์การฝึกอบรมประกอบด้วยโค้ดที่จำเป็นทั้งหมดสำหรับการประมวลผลข้อมูล การโหลดโมเดลที่ฝึกไว้ล่วงหน้า การฝึกโมเดล และการบันทึกโมเดลที่ผ่านการฝึกอบรมสำหรับการอนุมาน URI ของโมเดลที่ฝึกไว้ล่วงหน้าประกอบด้วยคำจำกัดความของสถาปัตยกรรมโมเดลที่ฝึกไว้ล่วงหน้าและพารามิเตอร์ของโมเดล URI ของโมเดลที่ฝึกไว้ล่วงหน้านั้นจำเพาะสำหรับโมเดลนั้นๆ tarball รุ่นที่ได้รับการฝึกอบรมล่วงหน้าได้รับการดาวน์โหลดล่วงหน้าจาก TensorFlow และบันทึกด้วยลายเซ็นรุ่นที่เหมาะสมใน บริการจัดเก็บข้อมูลอย่างง่ายของ Amazon บัคเก็ต (Amazon S3) เพื่อให้งานการฝึกทำงานแบบแยกเครือข่าย ดูรหัสต่อไปนี้:

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

model_id, model_version = "tensorflow-tc-bert-en-uncased-L-12-H-768-A-12-2", "*"
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-tensorflow-tc-training"
s3_output_location = f"s3://{output_bucket}/{output_prefix}/output"

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

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

ถัดไป สำหรับการถ่ายโอนการเรียนรู้ในชุดข้อมูลที่คุณกำหนดเอง คุณอาจต้องเปลี่ยนค่าเริ่มต้นของไฮเปอร์พารามิเตอร์การฝึก ซึ่งแสดงอยู่ใน ไฮเปอร์พารามิเตอร์. คุณสามารถดึงพจนานุกรม 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"

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

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

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

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

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

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

อินเทอร์เฟซอินพุต/เอาต์พุตสำหรับอัลกอริธึมการจำแนกข้อความ TensorFlow

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

คำแนะนำต่อไปนี้อธิบายวิธีจัดรูปแบบข้อมูลการฝึกอบรมสำหรับการป้อนข้อมูลลงในแบบจำลอง:

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

ต่อไปนี้คือตัวอย่างไฟล์ CSV อินพุต โปรดทราบว่าไฟล์ไม่ควรมีส่วนหัว ไฟล์ควรโฮสต์ในบัคเก็ต S3 ที่มีเส้นทางคล้ายกับต่อไปนี้: s3://bucket_name/input_directory/. โปรดทราบว่าการต่อท้าย / จำเป็นต้องมี

|0 |hide new secretions from the parental units|
|0 |contains no wit , only labored gags|
|1 |that loves its characters and communicates something rather beautiful about human nature|
|...|...|

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

โมเดลที่สร้างขึ้นสามารถโฮสต์สำหรับการอนุมานและข้อความสนับสนุนเป็น application/x-text ชนิดของเนื้อหา. ผลลัพธ์ประกอบด้วยค่าความน่าจะเป็น ป้ายกำกับคลาสสำหรับคลาสทั้งหมด และป้ายกำกับที่คาดการณ์ซึ่งสอดคล้องกับดัชนีคลาสที่มีความน่าจะเป็นสูงสุดที่เข้ารหัสในรูปแบบ 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จากนั้นโมเดลจะแสดงความน่าจะเป็นเท่านั้น สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับการฝึกอบรมและการอนุมาน โปรดดูตัวอย่างสมุดบันทึก Introduction to ข้อมูลเบื้องต้นเกี่ยวกับ JumpStart – การจัดประเภทข้อความ.

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

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

ต่อไปนี้คือวิดีโอสองวิดีโอที่แสดงให้เห็นว่าคุณสามารถจำลองกระบวนการปรับแต่งและปรับใช้แบบเดียวกันได้อย่างไร ซึ่งเราเพิ่งดำเนินการไปด้วยการคลิกเพียงไม่กี่ครั้งผ่าน JumpStart UI

ปรับแต่งโมเดลที่ฝึกไว้ล่วงหน้าอย่างละเอียด

นี่คือขั้นตอนในการปรับแต่งโมเดลการจัดประเภทข้อความที่ฝึกไว้ล่วงหน้าแบบเดียวกันอย่างละเอียด

ปรับใช้แบบจำลองที่ปรับแต่งแล้ว

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

สรุป

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

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


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

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

ประทับเวลา:

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