ในขณะที่ลูกค้าเร่งการโยกย้ายไปยังคลาวด์และเปลี่ยนแปลงธุรกิจ บางคนพบว่าตัวเองอยู่ในสถานการณ์ที่ต้องจัดการการดำเนินงานด้านไอทีในสภาพแวดล้อมมัลติคลาวด์ ตัวอย่างเช่น คุณอาจได้บริษัทที่ทำงานบนผู้ให้บริการระบบคลาวด์รายอื่นอยู่แล้ว หรือคุณอาจมีปริมาณงานที่สร้างมูลค่าจากความสามารถเฉพาะตัวที่ AWS มอบให้ อีกตัวอย่างหนึ่งคือผู้จำหน่ายซอฟต์แวร์อิสระ (ISV) ที่ทำให้ผลิตภัณฑ์และบริการของตนพร้อมใช้งานในแพลตฟอร์มคลาวด์ต่างๆ เพื่อเป็นประโยชน์ต่อลูกค้าปลายทาง หรือองค์กรอาจดำเนินงานในภูมิภาคที่ไม่มีผู้ให้บริการคลาวด์หลัก และเพื่อให้เป็นไปตามข้อกำหนดด้านอธิปไตยของข้อมูลหรือถิ่นที่อยู่ของข้อมูล พวกเขาสามารถใช้ผู้ให้บริการคลาวด์รองได้
ในสถานการณ์เหล่านี้ เมื่อคุณเริ่มยอมรับ generative AI, โมเดลภาษาขนาดใหญ่ (LLM) และเทคโนโลยีการเรียนรู้ของเครื่อง (ML) เป็นส่วนสำคัญของธุรกิจของคุณ คุณอาจกำลังมองหาตัวเลือกเพื่อใช้ประโยชน์จาก AWS AI และ ML ความสามารถภายนอก AWS ในสภาพแวดล้อมมัลติคลาวด์ ตัวอย่างเช่น คุณอาจต้องการใช้ประโยชน์จาก อเมซอน SageMaker เพื่อสร้างและฝึกโมเดล ML หรือใช้ Amazon SageMaker เริ่มต้นอย่างรวดเร็ว เพื่อปรับใช้โมเดลพื้นฐานที่สร้างไว้ล่วงหน้าหรือโมเดล ML ของบริษัทอื่น ซึ่งคุณสามารถปรับใช้ได้ด้วยการคลิกปุ่มเพียงไม่กี่ปุ่ม หรือคุณอาจต้องการใช้ประโยชน์จาก อเมซอน เบดร็อค เพื่อสร้างและปรับขนาดแอปพลิเคชัน AI เชิงสร้างสรรค์ หรือคุณสามารถใช้ประโยชน์ได้ บริการ AI ที่ได้รับการฝึกอบรมล่วงหน้าของ AWSซึ่งไม่จำเป็นต้องให้คุณเรียนรู้ทักษะการเรียนรู้ของเครื่อง AWS ให้การสนับสนุนในสถานการณ์ที่องค์กรต้องการ นำโมเดลของตนเองมาสู่ Amazon SageMaker or ลงใน Amazon SageMaker Canvas เพื่อการคาดการณ์.
ในโพสต์นี้ เราสาธิตหนึ่งในตัวเลือกมากมายที่คุณต้องใช้เพื่อใช้ประโยชน์จากชุดความสามารถ AI/ML ที่กว้างที่สุดและลึกที่สุดของ AWS ในสภาพแวดล้อมมัลติคลาวด์ เราแสดงวิธีที่คุณสามารถสร้างและฝึกอบรมโมเดล ML ใน AWS และปรับใช้โมเดลในแพลตฟอร์มอื่น เราฝึกโมเดลโดยใช้ Amazon SageMaker จัดเก็บอาร์ติแฟกต์ของโมเดลไว้ บริการจัดเก็บข้อมูลอย่างง่ายของ Amazon (Amazon S3) และปรับใช้และรันโมเดลใน Azure แนวทางนี้จะเป็นประโยชน์หากคุณใช้บริการของ AWS สำหรับ ML สำหรับชุดคุณสมบัติที่ครอบคลุมที่สุด แต่คุณยังต้องเรียกใช้โมเดลของคุณในผู้ให้บริการระบบคลาวด์รายอื่นในสถานการณ์ใดสถานการณ์หนึ่งที่เราได้พูดคุยไปแล้ว
แนวคิดหลัก
สตูดิโอ Amazon SageMaker คือสภาพแวดล้อมการพัฒนาแบบผสมผสาน (IDE) บนเว็บสำหรับการเรียนรู้ของเครื่อง SageMaker Studio ช่วยให้นักวิทยาศาสตร์ข้อมูล วิศวกร ML และวิศวกรข้อมูลเตรียมข้อมูล สร้าง ฝึก และปรับใช้โมเดล ML บนอินเทอร์เฟซเว็บเดียว ด้วย SageMaker Studio คุณสามารถเข้าถึงเครื่องมือที่สร้างขึ้นตามวัตถุประสงค์สำหรับทุกขั้นตอนของวงจรการพัฒนา ML ตั้งแต่การเตรียมข้อมูลไปจนถึงการสร้าง การฝึกอบรม และการปรับใช้โมเดล ML ของคุณ ปรับปรุงประสิทธิภาพการทำงานของทีมวิทยาศาสตร์ข้อมูลได้สูงสุดถึงสิบเท่า โน้ตบุ๊ค SageMaker Studio เป็นสมุดบันทึกสำหรับการทำงานร่วมกันที่เริ่มต้นอย่างรวดเร็วซึ่งผสานรวมกับเครื่องมือ ML ที่สร้างขึ้นตามวัตถุประสงค์ใน SageMaker และบริการของ AWS อื่นๆ
SageMaker เป็นบริการ ML ที่ครอบคลุมซึ่งช่วยให้นักวิเคราะห์ธุรกิจ นักวิทยาศาสตร์ข้อมูล และวิศวกร MLOps สามารถสร้าง ฝึกอบรม และปรับใช้โมเดล ML สำหรับกรณีการใช้งานใดๆ โดยไม่คำนึงถึงความเชี่ยวชาญของ ML
AWS จัดให้ คอนเทนเนอร์การเรียนรู้เชิงลึก (DLC) สำหรับเฟรมเวิร์ก ML ยอดนิยม เช่น PyTorch, TensorFlow และ Apache MXNet ซึ่งคุณสามารถใช้กับ SageMaker สำหรับการฝึกอบรมและการอนุมาน DLC มีให้เป็นอิมเมจ Docker ใน การลงทะเบียน Amazon Elastic Container (อเมซอน อีซีอาร์). อิมเมจ Docker ได้รับการติดตั้งล่วงหน้าและทดสอบด้วยเฟรมเวิร์กการเรียนรู้เชิงลึกยอดนิยมเวอร์ชันล่าสุด รวมถึงการพึ่งพาอื่นๆ ที่จำเป็นสำหรับการฝึกอบรมและการอนุมาน หากต้องการดูรายการอิมเมจ Docker ที่สร้างไว้ล่วงหน้าทั้งหมดซึ่งจัดการโดย SageMaker โปรดดู เส้นทางรีจิสทรีของ Docker และโค้ดตัวอย่าง. Amazon ECR รองรับการสแกนความปลอดภัยและผสานรวมกับ ผู้ตรวจสอบอเมซอน บริการการจัดการช่องโหว่เพื่อให้เป็นไปตามข้อกำหนดด้านความปลอดภัยด้านอิมเมจขององค์กรของคุณ และสแกนการประเมินช่องโหว่โดยอัตโนมัติ องค์กรก็สามารถใช้ได้ การฝึกอบรม AWS และ การอนุมาน AWS เพื่อประสิทธิภาพด้านราคาที่ดีขึ้นสำหรับการรันงานการฝึกอบรม ML หรือการอนุมาน
ภาพรวมโซลูชัน
ในส่วนนี้ เราจะอธิบายวิธีสร้างและฝึกอบรมโมเดลโดยใช้ SageMaker และปรับใช้โมเดลกับฟังก์ชัน Azure เราใช้สมุดบันทึก SageMaker Studio เพื่อสร้าง ฝึกฝน และปรับใช้โมเดล เราฝึกโมเดลใน SageMaker โดยใช้อิมเมจ Docker ที่สร้างไว้ล่วงหน้าสำหรับ PyTorch แม้ว่าเราจะปรับใช้โมเดลที่ผ่านการฝึกอบรมกับ Azure ในกรณีนี้ คุณสามารถใช้แนวทางเดียวกันเพื่อปรับใช้โมเดลบนแพลตฟอร์มอื่น เช่น ในสถานที่หรือแพลตฟอร์มระบบคลาวด์อื่นๆ
เมื่อเราสร้างงานการฝึก SageMaker จะเปิดตัวอินสแตนซ์การประมวลผล ML และใช้โค้ดการฝึกของเราและชุดข้อมูลการฝึกเพื่อฝึกโมเดล โดยจะบันทึกสิ่งประดิษฐ์ของโมเดลที่เป็นผลลัพธ์และเอาต์พุตอื่นๆ ในบัคเก็ต S3 ที่เราระบุเป็นอินพุตสำหรับงานการฝึก เมื่อ Model Training เสร็จสิ้น เราจะใช้ เปิด Neural Network Exchange (ONNX) ไลบรารีรันไทม์เพื่อส่งออกโมเดล PyTorch เป็นโมเดล ONNX
สุดท้ายนี้ เราจะปรับใช้โมเดล ONNX พร้อมกับโค้ดการอนุมานแบบกำหนดเองที่เขียนด้วยภาษา Python ไปจนถึงฟังก์ชัน Azure โดยใช้ Azure CLI ONNX รองรับไฟล์ เฟรมเวิร์กและเครื่องมือ ML ที่ใช้กันทั่วไป. สิ่งหนึ่งที่ควรทราบก็คือการแปลงโมเดล ML เป็น ONNX นั้นมีประโยชน์หากคุณต้องการใช้เฟรมเวิร์กการปรับใช้เป้าหมายอื่น เช่น PyTorch เป็น TensorFlow หากคุณใช้เฟรมเวิร์กเดียวกันทั้งบนต้นทางและเป้าหมาย คุณไม่จำเป็นต้องแปลงโมเดลเป็นรูปแบบ ONNX
แผนภาพต่อไปนี้แสดงสถาปัตยกรรมสำหรับแนวทางนี้
เราใช้สมุดบันทึก SageMaker Studio ร่วมกับ SageMaker Python SDK เพื่อสร้างและฝึกโมเดลของเรา SageMaker Python SDK เป็นไลบรารีโอเพ่นซอร์สสำหรับการฝึกอบรมและปรับใช้โมเดล ML บน SageMaker สำหรับรายละเอียดเพิ่มเติม โปรดดูที่ สร้างหรือเปิด Amazon SageMaker Studio Notebook.
ข้อมูลโค้ดในส่วนต่อไปนี้ได้รับการทดสอบในสภาพแวดล้อมโน้ตบุ๊ก SageMaker Studio โดยใช้อิมเมจ Data Science 3.0 และเคอร์เนล Python 3.0
ในโซลูชันนี้ เราสาธิตขั้นตอนต่อไปนี้:
- ฝึกโมเดล PyTorch
- ส่งออกโมเดล PyTorch เป็นโมเดล ONNX
- แพ็กเกจโมเดลและโค้ดการอนุมาน
- ปรับใช้โมเดลกับฟังก์ชัน Azure
เบื้องต้น
คุณควรมีข้อกำหนดเบื้องต้นดังต่อไปนี้:
- บัญชี AWS
- โดเมน SageMaker และผู้ใช้ SageMaker Studio สำหรับคำแนะนำในการสร้างสิ่งเหล่านี้ โปรดดูที่ ออนบอร์ดไปยังโดเมน Amazon SageMaker โดยใช้การตั้งค่าด่วน.
- Azure CLI
- การเข้าถึง Azure และข้อมูลประจำตัวสำหรับบริการหลักที่มีสิทธิ์ในการสร้างและจัดการฟังก์ชัน Azure
ฝึกโมเดลด้วย PyTorch
ในส่วนนี้ เราจะให้รายละเอียดขั้นตอนในการฝึกโมเดล PyTorch
ติดตั้งการอ้างอิง
ติดตั้งไลบรารีเพื่อดำเนินการขั้นตอนที่จำเป็นสำหรับการฝึกโมเดลและการปรับใช้โมเดล:
pip install torchvision onnx onnxruntime
ตั้งค่าเริ่มต้นให้เสร็จสมบูรณ์
เราเริ่มต้นด้วยการนำเข้าไฟล์ AWS SDK สำหรับ Python (Boto3) และ SageMaker Python SDK. ในส่วนหนึ่งของการตั้งค่า เรากำหนดสิ่งต่อไปนี้:
- ออบเจ็กต์เซสชันที่ให้วิธีการอำนวยความสะดวกภายในบริบทของ SageMaker และบัญชีของเราเอง
- บทบาท SageMaker ARN ใช้เพื่อมอบสิทธิ์ให้กับการฝึกอบรมและบริการโฮสติ้ง เราต้องการสิ่งนี้เพื่อให้บริการเหล่านี้สามารถเข้าถึงบัคเก็ต S3 ที่จัดเก็บข้อมูลและโมเดลของเราไว้ สำหรับคำแนะนำในการสร้างบทบาทที่ตรงกับความต้องการทางธุรกิจของคุณ โปรดดูที่ บทบาทของ SageMaker. สำหรับโพสต์นี้ เราใช้บทบาทการดำเนินการเดียวกันกับอินสแตนซ์สมุดบันทึก Studio ของเรา เราได้รับบทบาทนี้โดยการเรียก
sagemaker.get_execution_role()
. - ภูมิภาคเริ่มต้นที่งานการฝึกอบรมของเราจะดำเนินการ
- ที่เก็บข้อมูลเริ่มต้นและคำนำหน้าที่เราใช้เพื่อจัดเก็บเอาต์พุตโมเดล
ดูรหัสต่อไปนี้:
import sagemaker
import boto3
import os execution_role = sagemaker.get_execution_role()
region = boto3.Session().region_name
session = sagemaker.Session()
bucket = session.default_bucket()
prefix = "sagemaker/mnist-pytorch"
สร้างชุดข้อมูลการฝึกอบรม
เราใช้ชุดข้อมูลที่มีอยู่ในที่เก็บข้อมูลสาธารณะ sagemaker-example-files-prod-{region}
. ชุดข้อมูลประกอบด้วยไฟล์ต่อไปนี้:
- รถไฟภาพ-idx3-ubyte.gz – มีภาพชุดการฝึก
- รถไฟป้าย-idx1-ubyte.gz – มีป้ายชุดการฝึก
- t10k-images-idx3-ubyte.gz – มีภาพชุดทดสอบ
- t10k-labels-idx1-ubyte.gz – มีฉลากชุดทดสอบ
เราใช้torchvision.datasets
โมดูลเพื่อดาวน์โหลดข้อมูลจากบัคเก็ตสาธารณะภายในเครื่องก่อนที่จะอัปโหลดไปยังบัคเก็ตข้อมูลการฝึกอบรมของเรา เราส่งตำแหน่งบัคเก็ตนี้เป็นข้อมูลป้อนเข้างานการฝึกอบรม SageMaker สคริปต์การฝึกของเราใช้ตำแหน่งนี้เพื่อดาวน์โหลดและเตรียมข้อมูลการฝึก จากนั้นฝึกโมเดล ดูรหัสต่อไปนี้:
MNIST.mirrors = [ f"https://sagemaker-example-files-prod-{region}.s3.amazonaws.com/datasets/image/MNIST/"
] MNIST( "data", download=True, transform=transforms.Compose( [transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,))] ),
)
สร้างสคริปต์การฝึกอบรม
ด้วย SageMaker คุณสามารถนำโมเดลของคุณเองมาใช้ได้ โหมดสคริปต์. ด้วยโหมดสคริปต์ คุณสามารถใช้คอนเทนเนอร์ SageMaker ที่สร้างไว้ล่วงหน้าและจัดเตรียมสคริปต์การฝึกของคุณเองซึ่งมีคำจำกัดความของโมเดล พร้อมด้วยไลบรารีและการขึ้นต่อกันแบบกำหนดเอง ที่ SageMaker Python SDK ส่งสคริปต์ของเราเป็น entry_point
ไปยังคอนเทนเนอร์ซึ่งโหลดและรันฟังก์ชันรถไฟจากสคริปต์ที่ให้มาเพื่อฝึกโมเดลของเรา
เมื่อการฝึกเสร็จสมบูรณ์ SageMaker จะบันทึกเอาต์พุตของโมเดลในบัคเก็ต S3 ที่เราจัดเตรียมไว้เป็นพารามิเตอร์ให้กับงานการฝึก
รหัสการฝึกอบรมของเราดัดแปลงมาจากสิ่งต่อไปนี้ สคริปต์ตัวอย่าง PyTorch. ข้อความที่ตัดตอนมาจากโค้ดต่อไปนี้แสดงคำจำกัดความของโมเดลและฟังก์ชันรถไฟ:
# define network class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.conv1 = nn.Conv2d(1, 32, 3, 1) self.conv2 = nn.Conv2d(32, 64, 3, 1) self.dropout1 = nn.Dropout(0.25) self.dropout2 = nn.Dropout(0.5) self.fc1 = nn.Linear(9216, 128) self.fc2 = nn.Linear(128, 10) def forward(self, x): x = self.conv1(x) x = F.relu(x) x = self.conv2(x) x = F.relu(x) x = F.max_pool2d(x, 2) x = self.dropout1(x) x = torch.flatten(x, 1) x = self.fc1(x) x = F.relu(x) x = self.dropout2(x) x = self.fc2(x) output = F.log_softmax(x, dim=1) return output
# train def train(args, model, device, train_loader, optimizer, epoch): model.train() for batch_idx, (data, target) in enumerate(train_loader): data, target = data.to(device), target.to(device) optimizer.zero_grad() output = model(data) loss = F.nll_loss(output, target) loss.backward() optimizer.step() if batch_idx % args.log_interval == 0: print('Train Epoch: {} [{}/{} ({:.0f}%)]tLoss: {:.6f}'.format( epoch, batch_idx * len(data), len(train_loader.dataset), 100. * batch_idx / len(train_loader), loss.item())) if args.dry_run: break
ฝึกโมเดล
ตอนนี้เราได้ตั้งค่าสภาพแวดล้อมและสร้างชุดข้อมูลอินพุตและสคริปต์การฝึกแบบกำหนดเองแล้ว เราก็สามารถเริ่มการฝึกโมเดลโดยใช้ SageMaker ได้ เราใช้ตัวประมาณค่า PyTorch ใน SageMaker Python SDK เพื่อเริ่มงานฝึกอบรมบน SageMaker เราส่งพารามิเตอร์ที่จำเป็นไปยังตัวประมาณค่าและเรียกวิธีพอดี เมื่อเราเรียกความพอดีบนตัวประมาณค่า PyTorch SageMaker จะเริ่มงานการฝึกโดยใช้สคริปต์ของเราเป็นโค้ดการฝึก:
from sagemaker.pytorch import PyTorch output_location = f"s3://{bucket}/{prefix}/output"
print(f"training artifacts will be uploaded to: {output_location}") hyperparameters={ "batch-size": 100, "epochs": 1, "lr": 0.1, "gamma": 0.9, "log-interval": 100
} instance_type = "ml.c4.xlarge"
estimator = PyTorch( entry_point="train.py", source_dir="code", # directory of your training script role=execution_role, framework_version="1.13", py_version="py39", instance_type=instance_type, instance_count=1, volume_size=250, output_path=output_location, hyperparameters=hyperparameters
) estimator.fit(inputs = { 'training': f"{inputs}", 'testing': f"{inputs}"
})
ส่งออกโมเดลที่ผ่านการฝึกอบรมเป็นโมเดล ONNX
หลังจากการฝึกอบรมเสร็จสิ้นและโมเดลของเราได้รับการบันทึกไปยังตำแหน่งที่กำหนดไว้ล่วงหน้าใน Amazon S3 เราจะส่งออกโมเดลไปยังโมเดล ONNX โดยใช้รันไทม์ ONNX
เรารวมโค้ดเพื่อส่งออกโมเดลของเราไปยัง ONNX ในสคริปต์การฝึกของเราเพื่อให้ทำงานหลังจากการฝึกเสร็จสิ้น
PyTorch ส่งออกโมเดลไปยัง ONNX โดยการรันโมเดลโดยใช้อินพุตของเรา และบันทึกการติดตามของโอเปอเรเตอร์ที่ใช้ในการคำนวณเอาต์พุต เราใช้อินพุตแบบสุ่มประเภทที่ถูกต้องด้วย PyTorch torch.onnx.export
ฟังก์ชั่นเพื่อส่งออกโมเดลไปยัง ONNX นอกจากนี้เรายังระบุมิติแรกในอินพุตของเราเป็นไดนามิกเพื่อให้แบบจำลองของเรายอมรับตัวแปร batch_size
ของอินพุตระหว่างการอนุมาน
def export_to_onnx(model, model_dir, device): logger.info("Exporting the model to onnx.") dummy_input = torch.randn(1, 1, 28, 28).to(device) input_names = [ "input_0" ] output_names = [ "output_0" ] path = os.path.join(model_dir, 'mnist-pytorch.onnx') torch.onnx.export(model, dummy_input, path, verbose=True, input_names=input_names, output_names=output_names, dynamic_axes={'input_0' : {0 : 'batch_size'}, # variable length axes 'output_0' : {0 : 'batch_size'}})
ONNX เป็นรูปแบบมาตรฐานแบบเปิดสำหรับโมเดลการเรียนรู้เชิงลึกที่ช่วยให้สามารถทำงานร่วมกันระหว่างเฟรมเวิร์กการเรียนรู้เชิงลึก เช่น PyTorch, Microsoft Cognitive Toolkit (CNTK) และอื่นๆ ซึ่งหมายความว่าคุณสามารถใช้เฟรมเวิร์กใดๆ เหล่านี้เพื่อฝึกโมเดล จากนั้นจึงส่งออกโมเดลที่ได้รับการฝึกล่วงหน้าในรูปแบบ ONNX เมื่อส่งออกโมเดลไปยัง ONNX คุณจะได้รับประโยชน์จากอุปกรณ์และแพลตฟอร์มการปรับใช้งานที่มีให้เลือกมากมาย
ดาวน์โหลดและแตกไฟล์สิ่งประดิษฐ์ของโมเดล
SageMaker โมเดล ONNX ที่สคริปต์การฝึกอบรมของเราบันทึกไว้ได้รับการคัดลอกไปยัง Amazon S3 ในตำแหน่งเอาต์พุตที่เราระบุไว้เมื่อเราเริ่มงานการฝึกอบรม สิ่งประดิษฐ์ของแบบจำลองจะถูกจัดเก็บเป็นไฟล์เก็บถาวรที่บีบอัดที่เรียกว่า model.tar.gz
. เราดาวน์โหลดไฟล์เก็บถาวรนี้ไปยังไดเร็กทอรีภายในเครื่องในอินสแตนซ์สมุดบันทึก Studio ของเรา และแตกไฟล์อาร์ติแฟกต์ของโมเดล ซึ่งก็คือโมเดล ONNX
import tarfile local_model_file = 'model.tar.gz'
model_bucket,model_key = estimator.model_data.split('/',2)[-1].split('/',1)
s3 = boto3.client("s3")
s3.download_file(model_bucket,model_key,local_model_file) model_tar = tarfile.open(local_model_file)
model_file_name = model_tar.next().name
model_tar.extractall('.')
model_tar.close()
ตรวจสอบโมเดล ONNX
โมเดล ONNX จะถูกส่งออกไปยังไฟล์ชื่อ mnist-pytorch.onnx
โดยสคริปต์การฝึกอบรมของเรา หลังจากที่เราดาวน์โหลดและแตกไฟล์นี้แล้ว เราสามารถเลือกตรวจสอบโมเดล ONNX ได้โดยใช้ onnx.checker
โมดูล. NS check_model
ฟังก์ชั่นในโมดูลนี้จะตรวจสอบความสอดคล้องของโมเดล มีข้อยกเว้นเกิดขึ้นหากการทดสอบล้มเหลว
import onnx onnx_model = onnx.load("mnist-pytorch.onnx")
onnx.checker.check_model(onnx_model)
แพ็กเกจโมเดลและโค้ดการอนุมาน
สำหรับโพสต์นี้ เราใช้การปรับใช้ .zip สำหรับฟังก์ชัน Azure ในวิธีนี้ เราจะจัดแพคเกจโมเดล โค้ดที่แนบมา และการตั้งค่าฟังก์ชัน Azure ของเราเป็นไฟล์ .zip และเผยแพร่ไปยังฟังก์ชัน Azure รหัสต่อไปนี้แสดงโครงสร้างไดเร็กทอรีของแพ็คเกจการปรับใช้ของเรา:
mnist-onnx
├── function_app.py
├── model
│ └── mnist-pytorch.onnx
└── requirements.txt
แสดงรายการการขึ้นต่อกัน
เราแสดงรายการการขึ้นต่อกันสำหรับโค้ดการอนุมานของเราใน requirements.txt
ไฟล์ที่รูทของแพ็คเกจของเรา ไฟล์นี้ใช้เพื่อสร้างสภาพแวดล้อม Azure Functions เมื่อเราเผยแพร่แพ็คเกจ
azure-functions
numpy
onnxruntime
เขียนโค้ดอนุมาน
เราใช้ Python เพื่อเขียนโค้ดการอนุมานต่อไปนี้ โดยใช้ไลบรารีรันไทม์ ONNX เพื่อโหลดโมเดลของเราและรันการอนุมาน สิ่งนี้จะสั่งให้แอป Azure Functions ทำให้จุดสิ้นสุดพร้อมใช้งานที่ /classify
เส้นทางสัมพัทธ์
import logging
import azure.functions as func
import numpy as np
import os
import onnxruntime as ort
import json app = func.FunctionApp() def preprocess(input_data_json): # convert the JSON data into the tensor input return np.array(input_data_json['data']).astype('float32') def run_model(model_path, req_body): session = ort.InferenceSession(model_path) input_data = preprocess(req_body) logging.info(f"Input Data shape is {input_data.shape}.") input_name = session.get_inputs()[0].name # get the id of the first input of the model try: result = session.run([], {input_name: input_data}) except (RuntimeError) as e: print("Shape={0} and error={1}".format(input_data.shape, e)) return result[0] def get_model_path(): d=os.path.dirname(os.path.abspath(__file__)) return os.path.join(d , './model/mnist-pytorch.onnx') @app.function_name(name="mnist_classify")
@app.route(route="classify", auth_level=func.AuthLevel.ANONYMOUS)
def main(req: func.HttpRequest) -> func.HttpResponse: logging.info('Python HTTP trigger function processed a request.') # Get the img value from the post. try: req_body = req.get_json() except ValueError: pass if req_body: # run model result = run_model(get_model_path(), req_body) # map output to integer and return result string. digits = np.argmax(result, axis=1) logging.info(type(digits)) return func.HttpResponse(json.dumps({"digits": np.array(digits).tolist()})) else: return func.HttpResponse( "This HTTP triggered function successfully.", status_code=200 )
ปรับใช้โมเดลกับฟังก์ชัน Azure
ตอนนี้เรามีโค้ดที่บรรจุอยู่ในรูปแบบ .zip ที่จำเป็นแล้ว เราก็พร้อมที่จะเผยแพร่ไปยังฟังก์ชัน Azure เราดำเนินการดังกล่าวโดยใช้ Azure CLI ซึ่งเป็นโปรแกรมอรรถประโยชน์บรรทัดคำสั่งเพื่อสร้างและจัดการทรัพยากร Azure ติดตั้ง Azure CLI ด้วยรหัสต่อไปนี้:
!pip install -q azure-cli
จากนั้นทำตามขั้นตอนต่อไปนี้:
- เข้าสู่ระบบ Azure:
!az login
- ตั้งค่าพารามิเตอร์การสร้างทรัพยากร:
import random random_suffix = str(random.randint(10000,99999)) resource_group_name = f"multicloud-{random_suffix}-rg" storage_account_name = f"multicloud{random_suffix}" location = "ukwest" sku_storage = "Standard_LRS" functions_version = "4" python_version = "3.9" function_app = f"multicloud-mnist-{random_suffix}"
- ใช้คำสั่งต่อไปนี้เพื่อสร้างแอปฟังก์ชัน Azure พร้อมกับทรัพยากรที่จำเป็นต้องมี:
!az group create --name {resource_group_name} --location {location} !az storage account create --name {storage_account_name} --resource-group {resource_group_name} --location {location} --sku {sku_storage} !az functionapp create --name {function_app} --resource-group {resource_group_name} --storage-account {storage_account_name} --consumption-plan-location "{location}" --os-type Linux --runtime python --runtime-version {python_version} --functions-version {functions_version}
- ตั้งค่าฟังก์ชัน Azure เพื่อให้เมื่อเราปรับใช้แพ็คเกจฟังก์ชัน
requirements.txt
ไฟล์ถูกใช้เพื่อสร้างการพึ่งพาแอปพลิเคชันของเรา:!az functionapp config appsettings set --name {function_app} --resource-group {resource_group_name} --settings @./functionapp/settings.json
- กำหนดค่าแอพฟังก์ชั่นเพื่อรันโมเดล Python v2 และดำเนินการสร้างโค้ดที่ได้รับหลังจากการปรับใช้ .zip:
{ "AzureWebJobsFeatureFlags": "EnableWorkerIndexing", "SCM_DO_BUILD_DURING_DEPLOYMENT": true }
- หลังจากที่เรามีกลุ่มทรัพยากร คอนเทนเนอร์การจัดเก็บ และแอปฟังก์ชันที่มีการกำหนดค่าที่ถูกต้องแล้ว ให้เผยแพร่โค้ดไปยังแอปฟังก์ชัน:
!az functionapp deployment source config-zip -g {resource_group_name} -n {function_app} --src {function_archive} --build-remote true
ทดสอบโมเดล
เราได้ปรับใช้โมเดล ML กับฟังก์ชัน Azure เป็นทริกเกอร์ HTTP ซึ่งหมายความว่าเราสามารถใช้ URL ของแอปฟังก์ชันเพื่อส่งคำขอ HTTP ไปยังฟังก์ชันเพื่อเรียกใช้ฟังก์ชันและเรียกใช้โมเดลได้
หากต้องการเตรียมอินพุต ให้ดาวน์โหลดไฟล์รูปภาพทดสอบจากที่เก็บข้อมูลไฟล์ตัวอย่างของ SageMaker และเตรียมชุดตัวอย่างให้อยู่ในรูปแบบที่โมเดลต้องการ:
from torch.utils.data import DataLoader
from torchvision import datasets, transforms
import matplotlib.pyplot as plt transform=transforms.Compose( [transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,))]
) test_dataset = datasets.MNIST(root='../data', download=True, train=False, transform=transform)
test_loader = DataLoader(test_dataset, batch_size=16, shuffle=True) test_features, test_labels = next(iter(test_loader))
ใช้ไลบรารีคำขอเพื่อส่งคำขอโพสต์ไปยังจุดสิ้นสุดการอนุมานพร้อมอินพุตตัวอย่าง จุดสิ้นสุดการอนุมานใช้รูปแบบตามที่แสดงในรหัสต่อไปนี้:
import requests, json def to_numpy(tensor): return tensor.detach().cpu().numpy() if tensor.requires_grad else tensor.cpu().numpy() url = f"https://{function_app}.azurewebsites.net/api/classify"
response = requests.post(url, json.dumps({"data":to_numpy(test_features).tolist()}) )
predictions = json.loads(response.text)['digits']
ทำความสะอาด
เมื่อคุณทดสอบแบบจำลองเสร็จแล้ว ให้ลบกลุ่มทรัพยากรพร้อมกับทรัพยากรที่มีอยู่ รวมถึงคอนเทนเนอร์ที่เก็บข้อมูลและแอปฟังก์ชัน:
!az group delete --name {resource_group_name} --yes
นอกจากนี้ ขอแนะนำให้ปิดทรัพยากรที่ไม่ได้ใช้งานภายใน SageMaker Studio เพื่อลดต้นทุน สำหรับข้อมูลเพิ่มเติม โปรดดูที่ ประหยัดค่าใช้จ่ายโดยการปิดทรัพยากรที่ไม่ได้ใช้งานโดยอัตโนมัติภายใน Amazon SageMaker Studio.
สรุป
ในโพสต์นี้ เราได้แสดงวิธีที่คุณสามารถสร้างและฝึกอบรมโมเดล ML ด้วย SageMaker และปรับใช้กับผู้ให้บริการระบบคลาวด์รายอื่น ในโซลูชันนี้ เราใช้สมุดบันทึก SageMaker Studio แต่เราแนะนำให้ใช้สำหรับปริมาณงานการผลิต ม.ป.ป เพื่อสร้างเวิร์กโฟลว์การฝึกอบรมที่ทำซ้ำได้เพื่อเร่งการพัฒนาโมเดลและการปรับใช้
โพสต์นี้ไม่ได้แสดงวิธีที่เป็นไปได้ทั้งหมดในการปรับใช้และรันโมเดลในสภาพแวดล้อมมัลติคลาวด์ ตัวอย่างเช่น คุณยังสามารถจัดแพ็กเกจโมเดลของคุณลงในคอนเทนเนอร์อิมเมจพร้อมกับโค้ดการอนุมานและไลบรารีอ้างอิงเพื่อรันโมเดลเป็นแอปพลิเคชันคอนเทนเนอร์ในทุกแพลตฟอร์ม สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการนี้ โปรดดูที่ ปรับใช้แอปพลิเคชันคอนเทนเนอร์ในสภาพแวดล้อมมัลติคลาวด์โดยใช้ Amazon CodeCatalyst. จุดประสงค์ของโพสต์คือการแสดงให้เห็นว่าองค์กรต่างๆ สามารถใช้ความสามารถ AWS AI/ML ในสภาพแวดล้อมมัลติคลาวด์ได้อย่างไร
เกี่ยวกับผู้แต่ง
ราชาไวทยานาธาน เป็นสถาปนิกโซลูชันที่ AWS ซึ่งสนับสนุนลูกค้าบริการทางการเงินทั่วโลก Raja ทำงานร่วมกับลูกค้าเพื่อออกแบบแนวทางแก้ไขปัญหาที่ซับซ้อนโดยมีผลกระทบเชิงบวกในระยะยาวต่อธุรกิจของพวกเขา เขาเป็นผู้เชี่ยวชาญด้านวิศวกรรมที่แข็งแกร่งและมีทักษะในด้านกลยุทธ์ไอที การจัดการข้อมูลองค์กร และสถาปัตยกรรมแอปพลิเคชัน โดยมีความสนใจเป็นพิเศษในด้านการวิเคราะห์และการเรียนรู้ของเครื่อง
อมานดีพ บัจวา เป็นสถาปนิกโซลูชันอาวุโสที่ AWS ซึ่งสนับสนุนองค์กรบริการทางการเงิน เขาช่วยให้องค์กรบรรลุผลลัพธ์ทางธุรกิจโดยการระบุกลยุทธ์การเปลี่ยนแปลงระบบคลาวด์ที่เหมาะสมโดยพิจารณาจากแนวโน้มของอุตสาหกรรมและลำดับความสำคัญขององค์กร ประเด็นที่ Amandeep ให้คำปรึกษาบางส่วน ได้แก่ การโยกย้ายบนคลาวด์ กลยุทธ์คลาวด์ (รวมถึงไฮบริดและมัลติคลาวด์) การเปลี่ยนแปลงทางดิจิทัล ข้อมูลและการวิเคราะห์ และเทคโนโลยีโดยทั่วไป
เปรมา ไอเยอร์ เป็นผู้จัดการบัญชีด้านเทคนิคอาวุโสสำหรับ AWS Enterprise Support เธอทำงานร่วมกับลูกค้าภายนอกในโครงการต่างๆ มากมาย ช่วยให้พวกเขาปรับปรุงคุณค่าของโซลูชันเมื่อใช้ AWS
- เนื้อหาที่ขับเคลื่อนด้วย SEO และการเผยแพร่ประชาสัมพันธ์ รับการขยายวันนี้
- PlatoData.Network Vertical Generative Ai เพิ่มพลังให้กับตัวเอง เข้าถึงได้ที่นี่.
- เพลโตไอสตรีม. Web3 อัจฉริยะ ขยายความรู้ เข้าถึงได้ที่นี่.
- เพลโตESG. คาร์บอน, คลีนเทค, พลังงาน, สิ่งแวดล้อม แสงอาทิตย์, การจัดการของเสีย. เข้าถึงได้ที่นี่.
- เพลโตสุขภาพ เทคโนโลยีชีวภาพและข่าวกรองการทดลองทางคลินิก เข้าถึงได้ที่นี่.
- ที่มา: https://aws.amazon.com/blogs/machine-learning/train-and-deploy-ml-models-in-a-multicloud-environment-using-amazon-sagemaker/
- :มี
- :เป็น
- :ไม่
- :ที่ไหน
- $ ขึ้น
- 1
- 10
- 100
- 13
- 25
- 28
- 32
- 7
- 9
- a
- เกี่ยวกับเรา
- เร่งความเร็ว
- ยอมรับ
- เข้า
- ลงชื่อเข้าใช้
- บรรลุ
- ที่ได้มา
- ความได้เปรียบ
- หลังจาก
- AI
- AI / ML
- ทั้งหมด
- ช่วยให้
- ตาม
- แล้ว
- ด้วย
- แม้ว่า
- อเมซอน
- อเมซอน SageMaker
- ผืนผ้าใบ Amazon SageMaker
- สตูดิโอ Amazon SageMaker
- Amazon Web Services
- an
- นักวิเคราะห์
- การวิเคราะห์
- และ
- ไม่ระบุชื่อ
- อื่น
- ใด
- อาปาเช่
- app
- การใช้งาน
- การใช้งาน
- เข้าใกล้
- เหมาะสม
- สถาปัตยกรรม
- เอกสารเก่า
- เป็น
- พื้นที่
- AS
- การประเมินผล
- At
- โดยอัตโนมัติ
- อัตโนมัติ
- ใช้ได้
- AWS
- แกน
- สีฟ้า
- ตาม
- BE
- รับ
- ก่อน
- เริ่ม
- เป็นประโยชน์
- ประโยชน์
- ดีกว่า
- ระหว่าง
- ทั้งสอง
- นำมาซึ่ง
- ที่กว้างขึ้น
- สร้าง
- การก่อสร้าง
- ธุรกิจ
- แต่
- by
- โทรศัพท์
- ที่เรียกว่า
- โทร
- CAN
- ผ้าใบ
- ความสามารถในการ
- พกพา
- กรณี
- การตรวจสอบ
- ชั้น
- แยกประเภท
- คลิก
- เมฆ
- รหัส
- ความรู้ความเข้าใจ
- การทำงานร่วมกัน
- บริษัท
- สมบูรณ์
- ซับซ้อน
- การปฏิบัติตาม
- ครอบคลุม
- คำนวณ
- องค์ประกอบ
- ที่มีอยู่
- ภาชนะ
- ภาชนะบรรจุ
- มี
- สิ่งแวดล้อม
- ความสะดวกสบาย
- แปลง
- การแปลง
- แกน
- ค่าใช้จ่าย
- ได้
- สร้าง
- ที่สร้างขึ้น
- การสร้าง
- การสร้าง
- หนังสือรับรอง
- ประเพณี
- ลูกค้า
- ข้อมูล
- การจัดการข้อมูล
- การเตรียมข้อมูล
- วิทยาศาสตร์ข้อมูล
- ชุดข้อมูล
- ลึก
- การเรียนรู้ลึก ๆ
- ที่ลึกที่สุด
- ค่าเริ่มต้น
- กำหนด
- คำนิยาม
- สาธิต
- การอ้างอิง
- การอยู่ที่
- ปรับใช้
- นำไปใช้
- ปรับใช้
- การใช้งาน
- บรรยาย
- รายละเอียด
- รายละเอียด
- พัฒนาการ
- เครื่อง
- อุปกรณ์
- ต่าง
- ดิจิตอล
- แปลงดิจิตอล
- ตัวเลข
- Dimension
- กล่าวถึง
- do
- นักเทียบท่า
- โดเมน
- ทำ
- Dont
- ลง
- ดาวน์โหลด
- ในระหว่าง
- พลวัต
- e
- อื่น
- โอบกอด
- ช่วยให้
- การเปิดใช้งาน
- ปลาย
- ปลายทาง
- ชั้นเยี่ยม
- วิศวกร
- Enterprise
- ผู้ประกอบการ
- สิ่งแวดล้อม
- ยุค
- ยุค
- ทุกๆ
- ตัวอย่าง
- ยกเว้น
- ข้อยกเว้น
- การปฏิบัติ
- ความชำนาญ
- ส่งออก
- การส่งออก
- ภายนอก
- สารสกัด
- ล้มเหลว
- คุณสมบัติ
- สองสาม
- เนื้อไม่มีมัน
- ไฟล์
- ทางการเงิน
- บริการทางการเงิน
- หา
- ชื่อจริง
- พอดี
- ดังต่อไปนี้
- สำหรับ
- รูป
- รากฐาน
- กรอบ
- กรอบ
- ราคาเริ่มต้นที่
- ฟังก์ชัน
- ฟังก์ชั่น
- General
- สร้าง
- กำเนิด
- กำเนิด AI
- ได้รับ
- เหตุการณ์ที่
- การเงินโลก
- บัญชีกลุ่ม
- มี
- he
- การช่วยเหลือ
- จะช่วยให้
- โฮสติ้ง
- สรุป ความน่าเชื่อถือของ Olymp Trade?
- ทำอย่างไร
- HTML
- ที่ http
- HTTPS
- เป็นลูกผสม
- ID
- ระบุ
- Idle
- if
- แสดงให้เห็นถึง
- ภาพ
- ภาพ
- ส่งผลกระทบ
- นำเข้า
- การนำเข้า
- ปรับปรุง
- การปรับปรุง
- in
- ประกอบด้วย
- รวมทั้ง
- อิสระ
- อุตสาหกรรม
- ข้อมูล
- แรกเริ่ม
- อินพุต
- ปัจจัยการผลิต
- ติดตั้ง
- ตัวอย่าง
- คำแนะนำการใช้
- รวบรวม
- แบบบูรณาการ
- ความตั้งใจ
- ผลประโยชน์
- อินเตอร์เฟซ
- การทำงานร่วมกัน
- เข้าไป
- IT
- ITS
- การสัมภาษณ์
- งาน
- jpg
- JSON
- ภาษา
- ใหญ่
- ล่าสุด
- การเปิดตัว
- เรียนรู้
- การเรียนรู้
- ความยาว
- เลฟเวอเรจ
- ห้องสมุด
- ห้องสมุด
- วงจรชีวิต
- Line
- ลินุกซ์
- รายการ
- โหลด
- โหลด
- ในประเทศ
- ในท้องถิ่น
- ที่ตั้ง
- การเข้าสู่ระบบ
- ระยะยาว
- ที่ต้องการหา
- ปิด
- เครื่อง
- เรียนรู้เครื่อง
- ทำ
- จัดการ
- การจัดการ
- การจัดการ
- ผู้จัดการ
- หลาย
- แผนที่
- matplotlib
- อาจ..
- วิธี
- พบ
- มีคุณสมบัติตรงตาม
- วิธี
- วิธีการ
- ไมโครซอฟท์
- อาจ
- การโยกย้าย
- ML
- ม.ป.ป
- โหมด
- แบบ
- โมเดล
- โมดูล
- ข้อมูลเพิ่มเติม
- มากที่สุด
- ชื่อ
- ที่มีชื่อ
- คือ
- จำเป็นต้อง
- จำเป็น
- ความต้องการ
- สุทธิ
- เครือข่าย
- เกี่ยวกับประสาท
- เครือข่ายประสาท
- สมุดบันทึก
- มึน
- วัตถุ
- of
- on
- ONE
- เปิด
- โอเพนซอร์ส
- การดำเนินงาน
- การดำเนินการ
- ผู้ประกอบการ
- Options
- or
- ใบสั่ง
- organizacja
- องค์กร
- องค์กร
- OS
- อื่นๆ
- ของเรา
- ออก
- ผลลัพธ์
- เอาท์พุต
- ด้านนอก
- ของตนเอง
- แพ็คเกจ
- แพคเกจ
- พารามิเตอร์
- พารามิเตอร์
- ส่วนหนึ่ง
- ในสิ่งที่สนใจ
- พรรค
- ส่ง
- ผ่าน
- เส้นทาง
- ดำเนินการ
- สิทธิ์
- เวที
- แพลตฟอร์ม
- เพลโต
- เพลโตดาต้าอินเทลลิเจนซ์
- เพลโตดาต้า
- ยอดนิยม
- บวก
- เป็นไปได้
- โพสต์
- การคาดการณ์
- การจัดเตรียม
- เตรียมการ
- ข้อกำหนดเบื้องต้น
- ประถม
- หลัก
- ปัญหาที่เกิดขึ้น
- แปรรูปแล้ว
- การผลิต
- ผลผลิต
- ผลิตภัณฑ์
- มืออาชีพ
- โครงการ
- ให้
- ให้
- ผู้จัดหา
- ให้
- สาธารณะ
- ประกาศ
- หลาม
- ไฟฉาย
- รวดเร็ว
- ยก
- สุ่ม
- พร้อม
- ที่ได้รับ
- แนะนำ
- การบันทึก
- ลด
- อ้างอิง
- ไม่คำนึงถึง
- ภูมิภาค
- รีจิสทรี
- ญาติ
- ทำซ้ำได้
- ขอ
- การร้องขอ
- ต้องการ
- จำเป็นต้องใช้
- ความต้องการ
- ทรัพยากร
- แหล่งข้อมูล
- คำตอบ
- ผล
- ส่งผลให้
- กลับ
- ขวา
- บทบาท
- ราก
- วิ่ง
- วิ่ง
- ทำงาน
- sagemaker
- เดียวกัน
- ที่บันทึกไว้
- ขนาด
- การสแกน
- สถานการณ์
- วิทยาศาสตร์
- นักวิทยาศาสตร์
- ต้นฉบับ
- SDK
- รอง
- Section
- ส่วน
- ความปลอดภัย
- เห็น
- การเลือก
- ตนเอง
- ส่ง
- ระดับอาวุโส
- บริการ
- บริการ
- เซสชั่น
- ชุด
- การตั้งค่า
- การติดตั้ง
- รูปร่าง
- เธอ
- น่า
- โชว์
- แสดงให้เห็นว่า
- แสดง
- แสดงให้เห็นว่า
- ปิดตัวลง
- ปิด
- ง่าย
- สถานการณ์
- มีฝีมือ
- ทักษะ
- So
- ซอฟต์แวร์
- ทางออก
- โซลูชัน
- บาง
- แหล่ง
- อธิปไตย
- ที่ระบุไว้
- ระยะ
- มาตรฐาน
- เริ่มต้น
- ข้อความที่เริ่ม
- เริ่มต้น
- ขั้นตอน
- การเก็บรักษา
- จัดเก็บ
- เก็บไว้
- กลยุทธ์
- เชือก
- แข็งแรง
- โครงสร้าง
- สตูดิโอ
- ต่อจากนั้น
- ประสบความสำเร็จ
- อย่างเช่น
- สนับสนุน
- ที่สนับสนุน
- รองรับ
- เอา
- ใช้เวลา
- เป้า
- ทีม
- วิชาการ
- เทคโนโลยี
- เทคโนโลยี
- สิบ
- tensorflow
- ทดสอบ
- การทดสอบ
- การทดสอบ
- ข้อความ
- ที่
- พื้นที่
- ที่มา
- ของพวกเขา
- พวกเขา
- ตัวเอง
- แล้วก็
- ล้อยางขัดเหล่านี้ติดตั้งบนแกน XNUMX (มม.) ผลิตภัณฑ์นี้ถูกผลิตในหลายรูปทรง และหลากหลายเบอร์ความแน่นหนาของปริมาณอนุภาคขัดของมัน จะทำให้ท่านได้รับประสิทธิภาพสูงในการขัดและการใช้งานที่ยาวนาน
- พวกเขา
- สิ่ง
- ที่สาม
- นี้
- ครั้ง
- ไปยัง
- เครื่องมือ
- เครื่องมือ
- ไฟฉาย
- คบเพลิง
- ติดตาม
- รถไฟ
- ผ่านการฝึกอบรม
- การฝึกอบรม
- แปลง
- การแปลง
- กลยุทธ์การเปลี่ยนแปลง
- การแปลง
- แนวโน้ม
- เรียก
- ทริกเกอร์
- จริง
- ลอง
- ชนิด
- เป็นเอกลักษณ์
- อัปโหลด
- อัปโหลด
- URL
- ใช้
- ใช้กรณี
- มือสอง
- ผู้ใช้งาน
- ใช้
- การใช้
- ประโยชน์
- ตรวจสอบความถูกต้อง
- ความคุ้มค่า
- ตัวแปร
- ความหลากหลาย
- ผู้ขาย
- รุ่น
- ความอ่อนแอ
- ต้องการ
- คือ
- วิธี
- we
- เว็บ
- บริการเว็บ
- web-based
- ดี
- เมื่อ
- ที่
- จะ
- กับ
- ภายใน
- ขั้นตอนการทำงาน
- โรงงาน
- เขียน
- เขียน
- X
- ยัง
- คุณ
- ของคุณ
- ลมทะเล
- รหัสไปรษณีย์