สถานการณ์หนึ่งคือการสร้างโมเดลการเรียนรู้ของเครื่อง ต้องใช้งานได้จริงและพร้อมสำหรับผู้บริโภคและนักพัฒนา
วิธีที่ง่ายและได้รับความนิยมมากที่สุดในการปรับใช้โมเดลการเรียนรู้ของเครื่องคือการใส่ไว้ใน REST API
ด้วยไลบรารียอดนิยมที่เรียกว่า FastAPI นั่นคือสิ่งที่เราจะทำสำเร็จในวันนี้
แต่มันคืออะไร FastAPI?
เว็บเฟรมเวิร์ก FastAPI Python สร้างขึ้นจากพื้นฐานเพื่อใช้ประโยชน์จากความสามารถของ Python ร่วมสมัย
สำหรับการสื่อสารแบบอะซิงโครนัสและพร้อมกันกับไคลเอ็นต์ เป็นไปตามมาตรฐาน ASGI ในขณะที่ยังสามารถใช้ WSGI ได้
ปลายทางและเส้นทางสามารถใช้ฟังก์ชัน async ได้ นอกจากนี้ FastAPI ยังช่วยให้สามารถสร้างเว็บแอปได้อย่างมีประสิทธิผลในโค้ด Python ร่วมสมัยที่เน้นการพิมพ์ที่สะอาดตา
กรณีการใช้งานหลักของ FastAPI คือการสร้างปลายทาง API ตามที่ชื่อแนะนำ
การใช้มาตรฐาน OpenAPI ซึ่งรวมถึง Swagger UI แบบโต้ตอบ หรือการให้ข้อมูลพจนานุกรม Python เป็น JSON เป็นวิธีการง่ายๆ ในการบรรลุเป้าหมาย อย่างไรก็ตาม FastAPI ไม่ได้มีไว้สำหรับ API เท่านั้น
สามารถใช้เพื่อเสนอหน้าเว็บมาตรฐานโดยใช้เครื่องมือเทมเพลต Jinja2 และให้บริการแอปที่ใช้ WebSockets นอกเหนือจากสิ่งอื่นที่เว็บเฟรมเวิร์กสามารถทำได้
ในบทความนี้ เราจะพัฒนาโมเดลการเรียนรู้ของเครื่องที่ตรงไปตรงมา จากนั้นใช้ FastAPI เพื่อปรับใช้ เอาล่ะ.
การติดตั้ง FastAPI และการสร้าง API . แรก
จำเป็นต้องติดตั้งไลบรารีและเซิร์ฟเวอร์ ASGI ก่อน Uvuicorn หรือ Hypercorn จะทำงาน ทำงานโดยป้อนคำสั่งต่อไปนี้ลงในเทอร์มินัล:
เมื่อสร้าง API แล้ว คุณสามารถใช้โปรแกรมแก้ไขโค้ดที่ต้องการและเรียกดูได้ สร้างสคริปต์ Python ชื่อ ml_model.py เพื่อเริ่มต้น คุณสามารถตั้งชื่ออื่นให้กับคุณได้ แต่เพื่อประโยชน์ของโพสต์นี้ ฉันจะเรียกไฟล์นี้ว่า ml_model.py
ในการสร้าง API แบบตรงไปตรงมาด้วยสองปลายทาง คุณต้องดำเนินการดังต่อไปนี้:
- นำเข้าไลบรารี FastAPI และ Uvicorn
- ตั้งค่าอินสแตนซ์คลาส FastAPI
- ประกาศเส้นทางแรก ซึ่งในหน้าดัชนีจะสร้างวัตถุ JSON ที่ตรงไปตรงมา
- ประกาศเส้นทางที่สอง ซึ่งให้วัตถุ JSON ที่ตรงไปตรงมาพร้อมข้อความที่กำหนดเอง พารามิเตอร์ชื่อนำมาจาก URL โดยตรง (เช่น https://127.0.0.1:8000/Jay)
- ใช้ Uvicorn เพื่อเรียกใช้ API
การดำเนินการห้าขั้นตอนเหล่านี้จะแสดงในโค้ดต่อไปนี้ เช่น การสร้าง API . อย่างง่าย
เสร็จหมดแล้ว! มาเปิดตัว API ของเราทันที เปิดหน้าต่าง Terminal ข้างไฟล์ ml model.py เพื่อทำสิ่งนี้ให้สำเร็จ ถัดไป ป้อนข้อมูลต่อไปนี้:
ปุ่ม Enter ก่อนไปต่อ ขอหักล้างคำยืนยันนี้เสียก่อน แอปแรกใช้ชื่อไฟล์ Python เพียงอย่างเดียวโดยไม่มีส่วนขยาย แอปที่สองต้องมีชื่อเดียวกับอินสแตนซ์ FastAPI ของคุณ
เมื่อใช้ -reload คุณจะบอก API ว่าคุณต้องการให้โหลดซ้ำโดยอัตโนมัติเมื่อคุณบันทึกไฟล์ แทนที่จะเริ่มต้นใหม่ทั้งหมด
ตอนนี้เปิดเบราว์เซอร์และไปที่ https://127.0.0.1:8000; ผลลัพธ์ควรปรากฏดังนี้:
ตอนนี้คุณเข้าใจวิธีสร้าง API อย่างง่ายโดยใช้ FastAPI แล้ว
การสร้างและฝึกอบรมโมเดลแมชชีนเลิร์นนิง
เราจะฝึกโมเดลง่ายๆ โดยไม่ต้องรวบรวมหรือวิเคราะห์ข้อมูลใดๆ สิ่งเหล่านี้ไม่เกี่ยวข้องกับการปรับใช้โมเดลและไม่จำเป็นต่อหัวข้อที่มีอยู่
สามารถติดตั้งโมเดลตามชุดข้อมูล Iris ได้โดยใช้ตัวเดียวกัน เครือข่ายประสาท วิธีการติดตั้ง
และเราจะทำอย่างนั้น: ดาวน์โหลด ชุดข้อมูลไอริส และฝึกโมเดล นั่นจะไม่ง่าย ในการเริ่มต้น ให้สร้างไฟล์ชื่อ jaysmlmodel.py
ในนั้น คุณจะต้องทำสิ่งต่อไปนี้:
- การนำเข้า — คุณต้องมีแพนด้า, scikit-RandomForecastClassifier, BaseModel ของ pydantic ของ Learn (คุณจะพบสาเหตุในขั้นตอนต่อไป) และ joblib สำหรับการจัดเก็บและโหลดโมเดล
- ประกาศคลาส IrisSpecies ที่สืบทอดมาจากโมเดลพื้นฐาน ชั้นเรียนนี้มีเฉพาะเขตข้อมูลที่จำเป็นในการพยากรณ์ดอกไม้ชนิดเดียว (เพิ่มเติมในหัวข้อถัดไป)
- สร้างชั้นเรียน IrisModel เป็นเครื่องมือฝึกและทำนายแบบจำลอง
- ประกาศวิธีการที่ชื่อ _train model ภายใน IrisModel ใช้สำหรับฝึกโมเดลโดยใช้เทคนิค Random Forests รูปแบบการฝึกอบรมจะถูกส่งกลับโดยขั้นตอน
- ประกาศฟังก์ชันสปีชีส์ที่คาดการณ์ไว้ภายใน IrisModel ใช้ในการคาดการณ์ตามปัจจัยอินพุต 4 ปัจจัย (การวัดดอกไม้) ทั้งการพยากรณ์ (ชนิดของดอกไม้) และความน่าจะเป็นในการทำนายจะถูกส่งกลับโดยอัลกอริทึม
- เปลี่ยนตัวสร้างใน IrisModel เพื่อให้โหลดชุดข้อมูล Iris และฝึกโมเดลหากขาดหายไปจากโฟลเดอร์ วิธีนี้ช่วยแก้ปัญหาการฝึกโมเดลใหม่ๆ ซ้ำๆ ได้ ไลบรารี joblib ใช้สำหรับโหลดและบันทึกโมเดล
นี่คือรหัสทั้งหมด:
ฉันหวังว่ารายการด้านบนและความคิดเห็นจะทำให้เข้าใจได้ง่าย แม้ว่าจะสามารถสร้างโค้ดจำนวนมากได้ก็ตาม ตอนนี้โมเดลนี้ได้รับการพัฒนาแล้ว มาเผยแพร่ความสามารถในการคาดการณ์ผ่าน a REST API.
การสร้าง REST API แบบเต็ม
กลับไปที่ไฟล์ ml_model.py และล้างข้อมูลทั้งหมด ต้นแบบจะเหมือนกับที่คุณมี แต่เราควรเริ่มใหม่ด้วยไฟล์เปล่า
คุณจะกำหนดจุดสิ้นสุดเพียงจุดเดียวในครั้งนี้ ซึ่งเป็นจุดที่ใช้ในการกำหนดประเภทของดอกไม้ IrisModel.predict species() ซึ่งถูกประกาศไว้ในส่วนก่อนหน้า ปลายทางนี้ถูกเรียกเพื่อดำเนินการทำนาย
ประเภทคำขอคือการเปลี่ยนแปลงครั้งใหญ่อื่นๆ ในการส่งพารามิเตอร์ใน JSON แทนที่จะเป็น URL ขอแนะนำให้คุณใช้ POST เมื่อใช้งาน เรียนรู้เครื่อง APIs
ประโยคข้างต้นอาจฟังดูเหมือนพูดพล่อยๆ ถ้าคุณเป็น นักวิทยาศาสตร์ข้อมูลแต่ไม่เป็นไร ในการออกแบบและปรับใช้โมเดล ไม่จำเป็นต้องเป็นผู้เชี่ยวชาญเกี่ยวกับคำขอ HTTP และ REST API
งานสำหรับ ml model.py มีน้อยและตรงไปตรงมา:
- คุณต้องนำเข้าสิ่งต่อไปนี้จากไฟล์ jaymlmodel.py ที่สร้างไว้ก่อนหน้านี้: uvicorn, FastAPI, IrisModel และ IrisSpecies
- สร้างอินสแตนซ์ของ FastAPI และ IrisModel
- ประกาศฟังก์ชันที่ https://127.0.0.1:8000/predict เพื่อทำนาย
- IrisModel.predict species() วิธีการรับวัตถุประเภท IrisSpecies แปลงเป็นพจนานุกรมแล้วส่งคืน ผลตอบแทนเป็นระดับที่คาดหวังและความน่าจะเป็นที่คาดการณ์ไว้
- ใช้ uvicorn เพื่อรัน API
อีกครั้ง นี่คือรหัสของไฟล์ทั้งหมดพร้อมกับความคิดเห็น:
นั่นคือทั้งหมดที่คุณต้องทำ ในขั้นตอนต่อไป มาทดสอบ API กัน
การทดสอบ API
ป้อนบรรทัดต่อไปนี้อีกครั้งในเทอร์มินัลเพื่อรัน API: uvicorn ml_model:app –reload
นี่คือลักษณะที่ปรากฏของหน้าเอกสาร:
เท่านี้ก็เรียบร้อยสำหรับวันนี้ ในส่วนต่อจากนี้เรามาสรุปกัน
สรุป
วันนี้ คุณได้เรียนรู้ว่า FastAPI คืออะไรและใช้งานอย่างไร โดยใช้ทั้งตัวอย่าง API อย่างง่าย และตัวอย่างการเรียนรู้ของเครื่องอย่างง่าย คุณยังได้เรียนรู้วิธีสร้างและดูเอกสาร API รวมถึงวิธีทดสอบด้วย
นั่นเป็นจำนวนมากสำหรับชิ้นเดียว ดังนั้นอย่าแปลกใจหากต้องอ่านสองสามข้อเพื่อให้เข้าใจอย่างถูกต้อง
มีความสุขในการเข้ารหัส
เขียนความเห็น