ຄຳຕອບສັ້ນໆ: ເພື່ອເພີ່ມປະສິດທິພາບຂອງຮູບແບບ AI, ໃຫ້ເລືອກຂໍ້ຈຳກັດຫຼັກອັນໜຶ່ງ (ຄວາມຊັກຊ້າ, ຄ່າໃຊ້ຈ່າຍ, ໜ່ວຍຄວາມຈຳ, ຄຸນນະພາບ, ຄວາມໝັ້ນຄົງ, ຫຼື ປະລິມານການຜະລິດ), ຈາກນັ້ນເກັບກຳຂໍ້ມູນພື້ນຖານທີ່ໜ້າເຊື່ອຖືກ່ອນທີ່ຈະປ່ຽນແປງຫຍັງ. ກຳຈັດຂໍ້ຈຳກັດຂອງທໍ່ສົ່ງກ່ອນ, ຈາກນັ້ນນຳໃຊ້ຜົນປະໂຫຍດທີ່ມີຄວາມສ່ຽງຕ່ຳເຊັ່ນ: ຄວາມແມ່ນຍຳປະສົມ ແລະ ການ batching; ຖ້າຄຸນນະພາບຍັງຄົງຢູ່, ໃຫ້ຍ້າຍໄປໃຊ້ເຄື່ອງມື compiler/runtime ແລະ ຫຼັງຈາກນັ້ນຫຼຸດຜ່ອນຂະໜາດຂອງຮູບແບບຜ່ານການ quantisation ຫຼື ການກັ່ນເມື່ອຕ້ອງການ.
ບົດຮຽນຫຼັກ:
ຂໍ້ຈຳກັດ : ເລືອກໜຶ່ງ ຫຼື ສອງຕົວຊີ້ວັດເປົ້າໝາຍ; ການເພີ່ມປະສິດທິພາບແມ່ນພູມສັນຖານຂອງການແລກປ່ຽນ, ບໍ່ແມ່ນໄຊຊະນະໂດຍບໍ່ເສຍຄ່າ.
ການວັດແທກ : ກຳນົດປະລິມານວຽກຕົວຈິງດ້ວຍ p50/p95/p99, ປະລິມານວຽກ, ການນຳໃຊ້ ແລະ ຈຸດສູງສຸດຂອງໜ່ວຍຄວາມຈຳ.
Pipeline : ແກ້ໄຂ tokenisation, dataloaders, preprocessing, ແລະ batching ກ່ອນທີ່ຈະແຕະຕ້ອງຮູບແບບ.
ການຮັບໃຊ້ : ໃຊ້ການເກັບຂໍ້ມູນໄວ້ໃນແຄດ, ການແບ່ງກຸ່ມໂດຍເຈດຕະນາ, ການປັບແຕ່ງການເຮັດວຽກພ້ອມກັນ, ແລະ ຕິດຕາມເບິ່ງຄວາມຊັກຊ້າຂອງຫາງຢ່າງໃກ້ຊິດ.
Guardrails : ດໍາເນີນການ prompts golden, metrics ໜ້າວຽກ, ແລະ ການກວດສອບຈຸດຫຼັງຈາກການປ່ຽນແປງປະສິດທິພາບແຕ່ລະຄັ້ງ.

🔗 ວິທີການປະເມີນຮູບແບບ AI ຢ່າງມີປະສິດທິພາບ
ເງື່ອນໄຂຫຼັກ ແລະ ຂັ້ນຕອນໃນການຕັດສິນຮູບແບບຢ່າງຍຸດຕິທຳ ແລະ ໜ້າເຊື່ອຖື.
🔗 ວິທີການວັດແທກປະສິດທິພາບຂອງ AI ດ້ວຍຕົວຊີ້ວັດຕົວຈິງ
ໃຊ້ມາດຕະຖານ, ຄວາມໜ່ວງຊ້າ, ຕົ້ນທຶນ ແລະ ສັນຍານຄຸນນະພາບເພື່ອປຽບທຽບ.
🔗 ວິທີການທົດສອບຮູບແບບ AI ກ່ອນການຜະລິດ
ຂັ້ນຕອນການທົດສອບຕົວຈິງ: ການແຍກຂໍ້ມູນ, ກໍລະນີຄວາມກົດດັນ, ແລະ ການຕິດຕາມກວດກາ.
🔗 ວິທີການໃຊ້ AI ສຳລັບການສ້າງເນື້ອຫາ
ປ່ຽນແນວຄວາມຄິດໃຫ້ກາຍເປັນຮ່າງໄດ້ໄວຂຶ້ນດ້ວຍການກະຕຸ້ນທີ່ມີໂຄງສ້າງ ແລະ ການເຮັດຊ້ຳ.
1) “Optimize” ໝາຍຄວາມວ່າແນວໃດໃນການປະຕິບັດ (ເພາະວ່າທຸກຄົນໃຊ້ມັນແຕກຕ່າງກັນ) 🧠
ເມື່ອຄົນເວົ້າວ່າ "ເພີ່ມປະສິດທິພາບຮູບແບບ AI", ພວກເຂົາອາດຈະໝາຍເຖິງ:
-
ເຮັດໃຫ້ມັນໄວຂຶ້ນ (ຄວາມໜ່ວງຊ້າຕ່ຳລົງ)
-
ເຮັດໃຫ້ມັນລາຄາຖືກກວ່າ (ຫຼຸດຜ່ອນຊົ່ວໂມງ GPU, ຫຼຸດຜ່ອນການໃຊ້ຈ່າຍໃນຄລາວ)
-
ເຮັດໃຫ້ມັນນ້ອຍລົງ (ຮອຍຕີນໜ່ວຍຄວາມຈຳ, ການນຳໃຊ້ຂອບ)
-
ເຮັດໃຫ້ມັນຖືກຕ້ອງຫຼາຍຂຶ້ນ (ປັບປຸງຄຸນນະພາບ, ຫຼຸດຜ່ອນອາການຫຼອນ)
-
ເຮັດໃຫ້ມັນມີຄວາມໝັ້ນຄົງຫຼາຍຂຶ້ນ (ຄວາມແຕກຕ່າງໜ້ອຍລົງ, ຄວາມລົ້ມເຫຼວໃນການຜະລິດໜ້ອຍລົງ)
-
ເຮັດໃຫ້ມັນງ່າຍຕໍ່ການຮັບໃຊ້ (ປະລິມານການຜະລິດ, ການເປັນກຸ່ມ, ປະສິດທິພາບທີ່ຄາດເດົາໄດ້)
ນີ້ແມ່ນຄວາມຈິງທີ່ໜ້າລຳຄານເລັກນ້ອຍ: ທ່ານບໍ່ສາມາດເພີ່ມປະສິດທິພາບທັງໝົດນີ້ໄດ້ໃນເທື່ອດຽວ. ການເພີ່ມປະສິດທິພາບແມ່ນຄືກັບການບີບບານລູນ - ຍູ້ຂ້າງໜຶ່ງເຂົ້າໄປ ແລະ ອີກຂ້າງໜຶ່ງຈະໂຜ່ອອກມາ. ບໍ່ແມ່ນສະເໝີໄປ, ແຕ່ມັກຈະພຽງພໍທີ່ທ່ານຄວນວາງແຜນສຳລັບການແລກປ່ຽນ.
ສະນັ້ນກ່ອນທີ່ຈະແຕະຕ້ອງສິ່ງໃດ, ໃຫ້ເລືອກ ຂໍ້ຈຳກັດຫຼັກ :
-
ຖ້າທ່ານໃຫ້ບໍລິການຜູ້ໃຊ້ສົດ, ທ່ານຕ້ອງໃສ່ໃຈກ່ຽວກັບ ຄວາມໜ่วงເວລາ p95 ( AWS CloudWatch percentiles ) ແລະ ປະສິດທິພາບຂອງ tail ( ວິທີປະຕິບັດທີ່ດີທີ່ສຸດ “ຄວາມໜ່ວງເວລາ tail” ) 📉
-
ຖ້າເຈົ້າກຳລັງຝຶກຊ້ອມ, ເຈົ້າຕ້ອງໃສ່ໃຈກັບ ຄຸນນະພາບເວລາ ແລະ ການນຳໃຊ້ GPU 🔥
-
ຖ້າທ່ານກຳລັງນຳໃຊ້ຢູ່ໃນອຸປະກອນຕ່າງໆ, ທ່ານຕ້ອງໃສ່ໃຈກັບ RAM ແລະ ພະລັງງານ 🔋
2) ຮຸ່ນທີ່ດີຂອງການເພີ່ມປະສິດທິພາບແບບຈຳລອງ AI ມີລັກສະນະແນວໃດ ✅
ຮຸ່ນທີ່ດີຂອງການເພີ່ມປະສິດທິພາບບໍ່ພຽງແຕ່ "ນຳໃຊ້ການວັດແທກ ແລະ ອະທິຖານ". ແຕ່ມັນເປັນລະບົບ. ການຕັ້ງຄ່າທີ່ດີທີ່ສຸດມັກຈະມີ:
-
ມາດຕະຖານທີ່ທ່ານໄວ້ວາງໃຈ
ຖ້າທ່ານບໍ່ສາມາດສ້າງຜົນໄດ້ຮັບໃນປະຈຸບັນຂອງທ່ານຄືນໃໝ່, ທ່ານກໍ່ບໍ່ສາມາດຮູ້ໄດ້ວ່າທ່ານໄດ້ປັບປຸງຫຍັງແດ່. ງ່າຍໆ... ແຕ່ຄົນເຮົາຂ້າມມັນໄປ. ຈາກນັ້ນພວກເຂົາກໍ່ເປັນວົງກົມ. -
ຕົວຊີ້ວັດເປົ້າໝາຍທີ່ຊັດເຈນ
“ໄວຂຶ້ນ” ແມ່ນບໍ່ຊັດເຈນ. “ຕັດຄວາມໜ่วงເວລາຂອງ p95 ຈາກ 900 ມິນລິວິນາທີ ເປັນ 300 ມິນລິວິນາທີ ດ້ວຍຄະແນນຄຸນນະພາບດຽວກັນ” ເປັນເປົ້າໝາຍທີ່ແທ້ຈິງ. -
ຮົ້ວກັ້ນຄຸນນະພາບ
ທຸກໆໄຊຊະນະໃນການປະຕິບັດໜ້າທີ່ມີຄວາມສ່ຽງທີ່ຈະເກີດການຖົດຖອຍຂອງຄຸນນະພາບຢ່າງງຽບໆ. ທ່ານຕ້ອງການການທົດສອບ, ການປະເມີນຜົນ, ຫຼືຢ່າງໜ້ອຍຊຸດຄວາມສະຫຼາດ. -
ການຮັບຮູ້ຮາດແວ
ຮູບແບບທີ່ "ໄວ" ໃນ GPU ໜຶ່ງສາມາດເລື່ອນໄປອີກ GPU ໜຶ່ງໄດ້. CPU ແມ່ນຄວາມວຸ້ນວາຍພິເສດຂອງຕົວມັນເອງ. -
ການປ່ຽນແປງແບບຊ້ຳໆ, ບໍ່ແມ່ນການຂຽນຄືນໃໝ່ແບບໃຫຍ່ໆ
ເມື່ອທ່ານປ່ຽນແປງຫ້າຢ່າງໃນເວລາດຽວກັນ ແລະ ປະສິດທິພາບດີຂຶ້ນ, ທ່ານຈະບໍ່ຮູ້ວ່າເປັນຫຍັງ. ເຊິ່ງມັນ... ໜ້າວິຕົກກັງວົນ.
ການເພີ່ມປະສິດທິພາບຄວນຮູ້ສຶກຄືກັບການປັບແຕ່ງກີຕ້າ - ການປັບແຕ່ງເລັກນ້ອຍ, ຟັງໃຫ້ດີ, ເຮັດຊ້ຳອີກ 🎸. ຖ້າມັນຮູ້ສຶກຄືກັບການຫຼິ້ນມີດ, ໝາຍຄວາມວ່າມີບາງຢ່າງຜິດປົກກະຕິ.
3) ຕາຕະລາງປຽບທຽບ: ຕົວເລືອກທີ່ນິຍົມເພື່ອເພີ່ມປະສິດທິພາບຂອງຮູບແບບ AI 📊
ຂ້າງລຸ່ມນີ້ແມ່ນຕາຕະລາງປຽບທຽບທີ່ວ່ອງໄວ ແລະ ບໍ່ເປັນລະບຽບເລັກນ້ອຍຂອງເຄື່ອງມື/ວິທີການເພີ່ມປະສິດທິພາບທົ່ວໄປ. ບໍ່, ມັນບໍ່ແມ່ນ "ຍຸດຕິທຳ" ຢ່າງສົມບູນ - ຊີວິດຈິງກໍ່ບໍ່ຍຸດຕິທຳເຊັ່ນກັນ.
| ເຄື່ອງມື / ທາງເລືອກ | ຜູ້ຊົມ | ລາຄາ | ເປັນຫຍັງມັນຈຶ່ງໃຊ້ໄດ້ |
|---|---|---|---|
PyTorch torch.compile ( ເອກະສານ PyTorch ) |
ຄົນ PyTorch | ຟຣີ | ເຄັດລັບການຈັບກຣາຟ + ໂປຣແກຣມຄອມໄພເລີສາມາດຫຼຸດຜ່ອນຄ່າໃຊ້ຈ່າຍໄດ້... ບາງຄັ້ງມັນກໍ່ມະຫັດສະຈັນ ✨ |
| ONNX Runtime ( ເອກະສານ ONNX Runtime ) | ທີມງານປະຕິບັດງານ | ແບບອິດສະຫຼະ | ການເພີ່ມປະສິດທິພາບການອະນຸມານທີ່ເຂັ້ມແຂງ, ການສະໜັບສະໜູນຢ່າງກວ້າງຂວາງ, ດີສຳລັບການບໍລິການທີ່ໄດ້ມາດຕະຖານ |
| TensorRT ( ເອກະສານ NVIDIA TensorRT ) | ການນຳໃຊ້ NVIDIA | ຄວາມຮູ້ສຶກທີ່ຕ້ອງຈ່າຍ (ມັກຈະລວມເຂົ້າກັນ) | ການລວມຕົວ kernel ທີ່ຮຸກຮານ + ການຈັດການທີ່ແມ່ນຍໍາ, ໄວຫຼາຍເມື່ອມັນຄລິກ |
| DeepSpeed ( ເອກະສານ ZeRO ) | ທີມງານຝຶກອົບຮົມ | ຟຣີ | ການເພີ່ມປະສິດທິພາບໜ່ວຍຄວາມຈຳ + ອັດຕາການສົ່ງຂໍ້ມູນ (ZerRO ແລະອື່ນໆ). ສາມາດຮູ້ສຶກຄືກັບເຄື່ອງຈັກ jet |
| FSDP (PyTorch) ( ເອກະສານ PyTorch FSDP ) | ທີມງານຝຶກອົບຮົມ | ຟຣີ | ພາລາມິເຕີ/ການไล่ระดับສີຂອງຊິ້ນສ່ວນຕ່າງໆ, ເຮັດໃຫ້ຮູບແບບໃຫຍ່ໆໜ້າຢ້ານໜ້ອຍລົງ |
| ການວັດແທກປະລິມານຂອງ bitsandbytes ( bitsandbytes ) | ຜູ້ອອກແບບ LLM | ຟຣີ | ນ້ຳໜັກບິດຕ່ຳ, ປະຫຍັດໜ່ວຍຄວາມຈຳໄດ້ຫຼາຍ - ຄຸນນະພາບຂຶ້ນກັບ, ແຕ່ ຮ່າໆໆ 😬 |
| ການກັ່ນ ( Hinton et al., 2015 ) | ທີມງານຜະລິດຕະພັນ | "ຄ່າໃຊ້ຈ່າຍເວລາ" | ຮູບແບບນັກຮຽນຂະໜາດນ້ອຍກວ່າສືບທອດພຶດຕິກຳ, ໂດຍປົກກະຕິແລ້ວ ROI ທີ່ດີທີ່ສຸດໃນໄລຍະຍາວ |
| ການຕັດแต่งກິ່ງ ( ບົດຮຽນການຕັດแต่งກິ່ງດ້ວຍ PyTorch ) | ການຄົ້ນຄວ້າ + ຜະລິດຕະພັນ | ຟຣີ | ກຳຈັດນ້ຳໜັກທີ່ຕາຍແລ້ວ. ເຮັດວຽກໄດ້ດີຂຶ້ນເມື່ອຈັບຄູ່ກັບການຝຶກຊ້ອມຄືນໃໝ່ |
| ເຈ້ຍ FlashAttention / ເມັດພືດທີ່ລະລາຍແລ້ວ ( ເຈ້ຍ FlashAttention ) | ຜູ້ຊ່ຽວຊານດ້ານການສະແດງ | ຟຣີ | ຄວາມສົນໃຈໄວຂຶ້ນ, ພຶດຕິກຳຄວາມຈຳດີຂຶ້ນ. ໄຊຊະນະທີ່ແທ້ຈິງສຳລັບ Transformers |
| ເຊີບເວີການອະນຸມານ Triton ( ການແບ່ງກຸ່ມແບບໄດນາມິກ ) | ປະຕິບັດການ/ພື້ນຖານໂຄງລ່າງ | ຟຣີ | ການໃຫ້ບໍລິການຜະລິດ, ການວາງກຸ່ມ, ທໍ່ສົ່ງຫຼາຍຮູບແບບ - ຮູ້ສຶກວ່າຄ້າຍຄືກັບວິສາຫະກິດ |
ການສາລະພາບກ່ຽວກັບການຈັດຮູບແບບ quirk: “ລາຄາ” ແມ່ນບໍ່ເປັນລະບຽບເພາະວ່າ open-source ຍັງສາມາດເຮັດໃຫ້ທ່ານເສຍເວລາໃນທ້າຍອາທິດໃນການແກ້ໄຂຂໍ້ຜິດພາດ, ເຊິ່ງແມ່ນ… ລາຄາ. 😵💫
4) ເລີ່ມຕົ້ນດ້ວຍການວັດແທກ: ໂປຣໄຟລ໌ຄືກັບທີ່ທ່ານໝາຍຄວາມວ່າ 🔍
ຖ້າທ່ານເຮັດພຽງສິ່ງດຽວຈາກຄູ່ມືທັງໝົດນີ້, ໃຫ້ເຮັດແບບນີ້: ວັດແທກໃຫ້ຖືກຕ້ອງ.
ໃນການທົດສອບຂອງຂ້ອຍເອງ, “ຄວາມກ້າວໜ້າດ້ານການເພີ່ມປະສິດທິພາບ” ທີ່ໃຫຍ່ທີ່ສຸດແມ່ນມາຈາກການຄົ້ນພົບບາງສິ່ງບາງຢ່າງທີ່ງ່າຍດາຍຢ່າງໜ້າອາຍເຊັ່ນ:
-
ຕົວໂຫຼດຂໍ້ມູນເຮັດໃຫ້ GPU ອຶດຫິວ
-
ຄໍຂວດຂອງການປະມວນຜົນກ່ອນຂອງ CPU
-
ຂະໜາດ batch ນ້ອຍໆເຮັດໃຫ້ເກີດ overhead ຂອງ kernel launch
-
ການໃຫ້ໂທເຄັນຊ້າ (ໂທເຄັນສາມາດເປັນຄົນຮ້າຍທີ່ງຽບສະຫງົບ)
-
ການແຕກແຍກໜ່ວຍຄວາມຈຳ ( ບັນທຶກການຈັດສັນໜ່ວຍຄວາມຈຳ PyTorch CUDA )
-
ການປະມວນຜົນຊັ້ນດຽວທີ່ຄອບງຳ
ສິ່ງທີ່ຕ້ອງວັດແທກ (ຊຸດຂັ້ນຕ່ຳ)
-
ຄວາມໜ่วงເວລາ (p50, p95, p99) ( SRE ກ່ຽວກັບເປີເຊັນໄທລ໌ຄວາມໜ่วงເວລາ )
-
ປະລິມານການຜະລິດ (ໂທເຄັນ/ວິນາທີ, ຄຳຮ້ອງຂໍ/ວິນາທີ)
-
ການນຳໃຊ້ GPU (ຄອມພິວເຕີ + ໜ່ວຍຄວາມຈຳ)
-
ຈຸດສູງສຸດຂອງ VRAM / RAM
-
ລາຄາຕໍ່ໂທເຄັນ 1k (ຫຼືຕໍ່ການອະນຸມານ)
ແນວຄິດການສ້າງໂປຣໄຟລ໌ແບບປະຕິບັດ
-
ສະເໜີຕົວຢ່າງໜຶ່ງສະຖານະການທີ່ເຈົ້າສົນໃຈ (ບໍ່ແມ່ນຕົວຢ່າງຂອງຫຼິ້ນ).
-
ບັນທຶກທຸກຢ່າງໄວ້ໃນ “ປື້ມບັນທຶກທີ່ສົມບູນແບບ” ນ້ອຍໆ.
ແມ່ນແລ້ວມັນໜ້າເບື່ອ… ແຕ່ມັນຊ່ວຍປະຢັດເຈົ້າຈາກການເວົ້າເກີນຈິງໃນພາຍຫຼັງ.
(ຖ້າທ່ານຕ້ອງການເຄື່ອງມືທີ່ເປັນຮູບປະທຳເພື່ອເລີ່ມຕົ້ນ: PyTorch Profiler ( torch.profiler docs ) ແລະ Nsight Systems ( NVIDIA Nsight Systems ) ແມ່ນສິ່ງທີ່ຕ້ອງສົງໄສທົ່ວໄປ.)
5) ການເພີ່ມປະສິດທິພາບຂໍ້ມູນ + ການຝຶກອົບຮົມ: ມະຫາອຳນາດທີ່ງຽບສະຫງົບ 📦🚀
ຜູ້ຄົນມັກຄິດຫຼາຍກ່ຽວກັບສະຖາປັດຕະຍະກຳແບບຈຳລອງ ແລະ ລືມ pipeline. ໃນຂະນະດຽວກັນ pipeline ກໍ່ເຜົາຜານ GPU ເຄິ່ງໜຶ່ງຢ່າງງຽບໆ.
ໄຊຊະນະງ່າຍໆທີ່ສະແດງອອກໄວ
-
ໃຊ້ຄວາມແມ່ນຍຳປະສົມ (FP16/BF16 ບ່ອນທີ່ໝັ້ນຄົງ) ( PyTorch AMP / torch.amp )
ໂດຍປົກກະຕິແລ້ວໄວກວ່າ, ມັກຈະດີ - ແຕ່ໃຫ້ລະວັງຄວາມຜິດປົກກະຕິທາງດ້ານຕົວເລກ. -
ການສະສົມ gradient ເມື່ອຂະໜາດ batch ມີຈຳກັດ ( 🤗 ຄູ່ມືເລັ່ງ )
ຮັກສາການເພີ່ມປະສິດທິພາບໃຫ້ໝັ້ນຄົງໂດຍບໍ່ເຮັດໃຫ້ໜ່ວຍຄວາມຈຳລະເບີດ. -
ການກວດສອບແບບ Gradient ( torch.utils.checkpoint )
ການຊື້ຂາຍຄຳນວນສຳລັບໜ່ວຍຄວາມຈຳ - ເຮັດໃຫ້ບໍລິບົດທີ່ໃຫຍ່ກວ່າເປັນໄປໄດ້. -
ການໃຊ້ໂທເຄັນທີ່ມີປະສິດທິພາບ ( 🤗 Tokenizers )
ການໃຊ້ໂທເຄັນສາມາດກາຍເປັນບັນຫາຄໍຂວດໃນຂອບເຂດກ້ວາງ. ມັນບໍ່ແມ່ນເລື່ອງທີ່ໜ້າສົນໃຈ; ມັນມີຄວາມສຳຄັນ. -
ການປັບແຕ່ງຕົວໂຫຼດຂໍ້ມູນ
ພະນັກງານຫຼາຍຂຶ້ນ, ໜ່ວຍຄວາມຈຳທີ່ຖືກປັກໝຸດໄວ້, ການດຶງຂໍ້ມູນລ່ວງໜ້າ - ບໍ່ສະແດງຜົນແຕ່ມີປະສິດທິພາບ 😴➡️💪 ( ຄູ່ມືການປັບແຕ່ງປະສິດທິພາບ PyTorch )
ການປັບແຕ່ງແບບລະອຽດທີ່ມີປະສິດທິພາບຕໍ່ພາລາມິເຕີ
ຖ້າທ່ານກຳລັງປັບແຕ່ງຮູບແບບໃຫຍ່ໆ, ວິທີການ PEFT (ເຊັ່ນ: ຕົວປັບແບບ LoRA) ສາມາດຫຼຸດຜ່ອນຄ່າໃຊ້ຈ່າຍໃນການຝຶກອົບຮົມໄດ້ຢ່າງຫຼວງຫຼາຍ ໃນຂະນະທີ່ຍັງຄົງເຂັ້ມແຂງຢ່າງໜ້າປະຫຼາດໃຈ ( 🤗 ຄູ່ມື Transformers PEFT , ເອກະສານ LoRA ). ນີ້ແມ່ນໜຶ່ງໃນຊ່ວງເວລາທີ່ “ເປັນຫຍັງພວກເຮົາບໍ່ເຮັດສິ່ງນີ້ກ່ອນໜ້ານີ້?”.
6) ການເພີ່ມປະສິດທິພາບລະດັບສະຖາປັດຕະຍະກຳ: ປັບຂະໜາດໂມເດວໃຫ້ຖືກຕ້ອງ 🧩
ບາງຄັ້ງວິທີທີ່ດີທີ່ສຸດໃນການເພີ່ມປະສິດທິພາບແມ່ນ... ຢຸດໃຊ້ຮູບແບບທີ່ໃຫຍ່ເກີນໄປສຳລັບວຽກ. ຂ້ອຍຮູ້, ເປັນການໝິ່ນປະໝາດ 😄.
ໂທຫາກ່ຽວກັບບາງສິ່ງພື້ນຖານ:
-
ຕັດສິນໃຈວ່າທ່ານຕ້ອງການຄວາມຮູ້ສຶກດ້ານສະຕິປັນຍາທົ່ວໄປຢ່າງເຕັມທີ່ ຫຼື ຜູ້ຊ່ຽວຊານ.
-
ຮັກສາໜ້າຕ່າງບໍລິບົດໃຫ້ໃຫຍ່ເທົ່າທີ່ມັນຕ້ອງການ, ບໍ່ໃຫຍ່ກວ່າ.
-
ໃຊ້ຮູບແບບທີ່ໄດ້ຮັບການຝຶກອົບຮົມສຳລັບວຽກທີ່ມີຢູ່ (ຮູບແບບການຈັດປະເພດສຳລັບວຽກງານການຈັດປະເພດ, ແລະອື່ນໆ).
ຍຸດທະສາດການປັບຂະໜາດທີ່ຖືກຕ້ອງຕາມຕົວຈິງ
-
ປ່ຽນໄປໃຊ້ກະດູກສັນຫຼັງທີ່ນ້ອຍກວ່າ ສຳລັບການຮ້ອງຂໍສ່ວນໃຫຍ່
ຈາກນັ້ນສົ່ງ “ການສອບຖາມທີ່ຍາກ” ໄປຫາຮູບແບບທີ່ໃຫຍ່ກວ່າ. -
ໃຊ້ການຕັ້ງຄ່າສອງຂັ້ນຕອນ
ຮ່າງແບບຈຳລອງໄວ, ການກວດສອບແບບຈຳລອງທີ່ເຂັ້ມແຂງກວ່າ ຫຼື ການແກ້ໄຂ.
ມັນຄືກັບການຂຽນກັບເພື່ອນທີ່ເລືອກຫຼາຍ - ໜ້າລຳຄານ, ແຕ່ມີປະສິດທິພາບ. -
ຫຼຸດຄວາມຍາວຂອງຜົນຜະລິດ
ໂທເຄັນຜົນຜະລິດຕ້ອງເສຍເງິນ ແລະ ເວລາ. ຖ້າຮູບແບບຂອງທ່ານເຮັດວຽກໄດ້ໄວ, ທ່ານຈະຕ້ອງຈ່າຍຄ່າເຮັດວຽກ.
ຂ້ອຍເຄີຍເຫັນທີມງານຫຼຸດຜ່ອນຄ່າໃຊ້ຈ່າຍຢ່າງຫຼວງຫຼາຍໂດຍການບັງຄັບໃຊ້ຜົນຜະລິດທີ່ສັ້ນລົງ. ມັນຮູ້ສຶກວ່າເປັນເລື່ອງເລັກນ້ອຍ. ມັນໄດ້ຜົນ.
7) ການເພີ່ມປະສິດທິພາບຂອງ Compiler + Graph: ຄວາມໄວມາຈາກໃສ 🏎️
ນີ້ແມ່ນຊັ້ນ “ເຮັດໃຫ້ຄອມພິວເຕີເຮັດສິ່ງຂອງຄອມພິວເຕີທີ່ສະຫຼາດກວ່າ”.
ເຕັກນິກທົ່ວໄປ:
-
ການລວມຕົວຂອງຕົວປະຕິບັດການ (ລວມ kernels) ( NVIDIA TensorRT “ການລວມຊັ້ນ” )
-
ການພັບຄົງທີ່ (ຄ່າຄົງທີ່ທີ່ຄິດໄລ່ລ່ວງໜ້າ) ( ການເພີ່ມປະສິດທິພາບກຣາຟ ONNX Runtime )
-
ການເລືອກເຄີເນນ ຖືກປັບແຕ່ງໃຫ້ເໝາະສົມກັບຮາດແວ
-
ການຈັບກຣາຟ ເພື່ອຫຼຸດຜ່ອນຄ່າໃຊ້ຈ່າຍຂອງ Python ( ພາບລວມຂອງ
torch.compile)
ເວົ້າງ່າຍໆ: ຮູບແບບຂອງເຈົ້າອາດຈະໄວທາງຄະນິດສາດ, ແຕ່ຊ້າໃນການດຳເນີນງານ. ໂປຣແກຣມຄອມໄພເລີແກ້ໄຂບາງຢ່າງ.
ບັນທຶກການປະຕິບັດ (ຫຼື ຮອຍແປ້ວ)
-
ການເພີ່ມປະສິດທິພາບເຫຼົ່ານີ້ອາດຈະອ່ອນໄຫວຕໍ່ການປ່ຽນແປງຮູບຮ່າງຂອງຮູບແບບ.
-
ບາງລຸ້ນເລັ່ງຄວາມໄວໄດ້ຫຼາຍ, ບາງລຸ້ນຄ່ອຍໆສັ່ນ.
-
ບາງຄັ້ງເຈົ້າໄດ້ຮັບຄວາມໄວເພີ່ມຂຶ້ນ ແລະ ແມງໄມ້ທີ່ງົງງັນ - ຄືກັບ gremlin ຍ້າຍເຂົ້າມາ 🧌
ເຖິງຢ່າງໃດກໍ່ຕາມ, ເມື່ອມັນເຮັດວຽກ, ມັນເປັນໜຶ່ງໃນໄຊຊະນະທີ່ສະອາດທີ່ສຸດ.
8) ການວັດແທກປະລິມານ, ການຕັດแต่งກິ່ງ, ການກັ່ນ: ນ້ອຍລົງໂດຍບໍ່ຮ້ອງໄຫ້ (ຫຼາຍເກີນໄປ) 🪓📉
ນີ້ແມ່ນພາກສ່ວນທີ່ຜູ້ຄົນຕ້ອງການ... ເພາະມັນຟັງຄືກັບການສະແດງທີ່ບໍ່ເສຍຄ່າ. ມັນອາດຈະເປັນໄປໄດ້, ແຕ່ເຈົ້າຕ້ອງປະຕິບັດກັບມັນຄືກັບການຜ່າຕັດ.
ການວັດແທກປະລິມານ (ນ້ຳໜັກ/ການເປີດໃຊ້ງານທີ່ມີຄວາມແມ່ນຍຳຕ່ຳ)
-
ດີເລີດສຳລັບຄວາມໄວໃນການອະນຸມານ ແລະ ຄວາມຈຳ
-
ຄວາມສ່ຽງ: ຄຸນນະພາບຫຼຸດລົງ, ໂດຍສະເພາະໃນກໍລະນີຂອບ
-
ວິທີປະຕິບັດທີ່ດີທີ່ສຸດ: ປະເມີນຜົນໃນຊຸດການທົດສອບຕົວຈິງ, ບໍ່ແມ່ນຄວາມຮູ້ສຶກ
ລົດຊາດທົ່ວໄປທີ່ເຈົ້າຈະໄດ້ຍິນກ່ຽວກັບ:
-
INT8 (ມັກຈະເປັນຂອງແຂງ) ( ປະເພດປະລິມານ TensorRT )
-
INT4 / ບິດຕ່ຳ (ປະຫຍັດໄດ້ຫຼາຍ, ຄວາມສ່ຽງດ້ານຄຸນນະພາບເພີ່ມຂຶ້ນ) ( bitsandbytes k-bit quantization )
-
ປະລິມານປະສົມ (ບໍ່ແມ່ນທຸກຢ່າງຕ້ອງການຄວາມແມ່ນຍຳຄືກັນ)
ການຕັດแต่ง (ລຶບພາລາມິເຕີ)
-
ກຳຈັດນ້ຳໜັກ ຫຼື ໂຄງສ້າງ “ທີ່ບໍ່ສຳຄັນ” ( ບົດແນະນຳການຕັດแต่ง PyTorch )
-
ໂດຍປົກກະຕິແລ້ວຕ້ອງການການຝຶກອົບຮົມຄືນໃໝ່ເພື່ອຟື້ນຟູຄຸນນະພາບ
-
ເຮັດວຽກໄດ້ດີກ່ວາທີ່ຄົນຄິດ... ເມື່ອເຮັດຢ່າງລະມັດລະວັງ
ການກັ່ນ (ນັກຮຽນຮຽນຮູ້ຈາກຄູ)
ນີ້ແມ່ນວິທີການທີ່ຂ້ອຍມັກທີ່ສຸດໃນໄລຍະຍາວ. ການກັ່ນສາມາດຜະລິດຮູບແບບຂະໜາດນ້ອຍກວ່າທີ່ມີພຶດຕິກຳຄ້າຍຄືກັນ, ແລະມັນມັກຈະມີຄວາມໝັ້ນຄົງຫຼາຍກວ່າການວັດປະລິມານທີ່ຮຸນແຮງ ( ການກັ່ນຄວາມຮູ້ໃນເຄືອຂ່າຍປະສາດ ).
ຄຳປຽບທຽບທີ່ບໍ່ສົມບູນແບບ: ການກັ່ນແມ່ນຄືກັບການຖອກແກງທີ່ສັບສົນຜ່ານຕົວກອງ ແລະ ໄດ້… ແກງທີ່ນ້ອຍກວ່າ. ນັ້ນບໍ່ແມ່ນວິທີການເຮັດວຽກຂອງແກງ, ແຕ່ເຈົ້າເຂົ້າໃຈແລ້ວ 🍲.
9) ການຮັບໃຊ້ ແລະ ການອະນຸມານ: ເຂດສູ້ຮົບທີ່ແທ້ຈິງ 🧯
ເຈົ້າສາມາດ "ເພີ່ມປະສິດທິພາບ" ຮູບແບບ ແລະ ຍັງຮັບໃຊ້ມັນໄດ້ບໍ່ດີ. ການບໍລິການແມ່ນບ່ອນທີ່ຄວາມຊັກຊ້າ ແລະ ຄ່າໃຊ້ຈ່າຍກາຍເປັນຈິງ.
ການຮັບໃຊ້ໄຊຊະນະທີ່ສຳຄັນ
-
ການແບ່ງກຸ່ມ
ຊ່ວຍປັບປຸງປະລິມານການຜະລິດ. ແຕ່ຈະເພີ່ມຄວາມໜ่วงເວລາຖ້າທ່ານເຮັດຫຼາຍເກີນໄປ. ໃຫ້ມັນສົມດຸນ. ( ການແບ່ງກຸ່ມແບບໄດນາມິກ Triton ) -
ຊ
Prompt ແລະ ການນຳໃຊ້ KV-cache ຄືນໃໝ່ສາມາດມີປະລິມານຫຼາຍສຳລັບສະພາບການທີ່ຊ້ຳກັນ. ( ຄຳອະທິບາຍກ່ຽວກັບແຄຊ KV ) -
ຜົນຜະລິດແບບສະຕຣີມມິງ
ຜູ້ໃຊ້ຮູ້ສຶກວ່າມັນໄວຂຶ້ນເຖິງແມ່ນວ່າເວລາທັງໝົດຈະຄ້າຍຄືກັນ. ການຮັບຮູ້ມີຄວາມສຳຄັນ 🙂. -
ການຫຼຸດຜ່ອນຄ່າໃຊ້ຈ່າຍຕໍ່ໂທເຄັນ
ບາງ stack ເຮັດວຽກເພີ່ມເຕີມຕໍ່ໂທເຄັນ. ຫຼຸດຜ່ອນຄ່າໃຊ້ຈ່າຍນັ້ນ ແລະ ທ່ານຈະຊະນະໃຫຍ່.
ລະວັງຄວາມຊັກຊ້າຂອງຫາງ
ຄ່າສະເລ່ຍຂອງເຈົ້າອາດຈະເບິ່ງດີຫຼາຍ ໃນຂະນະທີ່ p99 ຂອງເຈົ້າເປັນໄພພິບັດ. ແຕ່ຫນ້າເສຍດາຍ, ຜູ້ໃຊ້ອາໄສຢູ່ໃນຫາງ. ( “ຄວາມຊັກຊ້າຂອງຫາງ” ແລະເຫດຜົນທີ່ຄ່າສະເລ່ຍຕົວະ )
10) ການເພີ່ມປະສິດທິພາບທີ່ຮັບຮູ້ຮາດແວ: ຈັບຄູ່ຮູບແບບກັບເຄື່ອງຈັກ 🧰🖥️
ການເພີ່ມປະສິດທິພາບໂດຍບໍ່ມີຄວາມຮູ້ກ່ຽວກັບຮາດແວແມ່ນຄືກັບການປັບແຕ່ງລົດແຂ່ງໂດຍບໍ່ຕ້ອງກວດສອບຢາງ. ແນ່ນອນ, ເຈົ້າສາມາດເຮັດໄດ້, ແຕ່ມັນກໍ່ໂງ່ໜ້ອຍໜຶ່ງ.
ການພິຈາລະນາ GPU
-
ແບນວິດໜ່ວຍຄວາມຈຳມັກຈະເປັນປັດໄຈຈຳກັດ, ບໍ່ແມ່ນການຄຳນວນດິບ
-
ຂະໜາດກຸ່ມໃຫຍ່ກວ່າສາມາດຊ່ວຍໄດ້, ຈົນກວ່າພວກມັນຈະບໍ່
-
ການລວມຕົວເຄີເນລ ແລະ ການເພີ່ມປະສິດທິພາບຄວາມສົນໃຈແມ່ນມີຄວາມສໍາຄັນຫຼາຍສໍາລັບ Transformers ( FlashAttention: IO-aware exact attention )
ການພິຈາລະນາ CPU
-
Threading, vectorization, ແລະ locality ໜ່ວຍຄວາມຈຳມີຄວາມສຳຄັນຫຼາຍ
-
ຄ່າໃຊ້ຈ່າຍໃນການໃຊ້ໂທເຄັນສາມາດຄອບງຳໄດ້ ( 🤗 ຕົວສ້າງໂທເຄັນ “ໄວ” )
-
ທ່ານອາດຈະຕ້ອງການກົນລະຍຸດການວັດແທກທີ່ແຕກຕ່າງຈາກ GPU
ການພິຈາລະນາກ່ຽວກັບ Edge / ມືຖື
-
ຮອຍຕີນຄວາມຊົງຈຳກາຍເປັນບຸລິມະສິດອັນດັບໜຶ່ງ
-
ຄວາມແຕກຕ່າງຂອງຄວາມຊັກຊ້າມີຄວາມສຳຄັນເພາະວ່າອຸປະກອນຕ່າງໆ… ມີອາລົມບໍ່ດີ
-
ຮູບແບບຂະໜາດນ້ອຍກວ່າ ແລະ ມີຄວາມຊ່ຽວຊານມັກຈະເອົາຊະນະຮູບແບບຂະໜາດໃຫຍ່ທົ່ວໄປ
11) ການປ້ອງກັນຄຸນນະພາບ: ຢ່າ "ເພີ່ມປະສິດທິພາບ" ຕົວເອງໃຫ້ກາຍເປັນແມງໄມ້🧪
ທຸກໆໄຊຊະນະດ້ວຍຄວາມໄວຄວນມາພ້ອມກັບການກວດສອບຄຸນນະພາບ. ຖ້າບໍ່ດັ່ງນັ້ນເຈົ້າຈະສະຫຼອງ, ສົ່ງ, ແລະຫຼັງຈາກນັ້ນໄດ້ຮັບຂໍ້ຄວາມເຊັ່ນ "ເປັນຫຍັງຜູ້ຊ່ວຍຈຶ່ງເວົ້າຄືກັບໂຈນສະຫລັດ?" 🏴☠️
ຮົ້ວກັ້ນທີ່ໃຊ້ໄດ້ຈິງ:
-
ການກະຕຸ້ນທອງຄຳ (ຊຸດການກະຕຸ້ນຄົງທີ່ທີ່ທ່ານທົດສອບສະເໝີ)
-
ຕົວຊີ້ວັດວຽກງານ (ຄວາມຖືກຕ້ອງ, F1, BLEU, ສິ່ງໃດກໍ່ຕາມທີ່ເໝາະສົມ)
-
ການກວດສອບຈຸດຂອງມະນຸດ (ແມ່ນແລ້ວ, ຢ່າງຈິງຈັງ)
-
ຂອບເຂດການຖົດຖອຍ (“ບໍ່ອະນຸຍາດໃຫ້ຫຼຸດລົງເກີນ X%”)
ຕິດຕາມຮູບແບບຄວາມລົ້ມເຫຼວນຳອີກ:
-
ການປ່ຽນຮູບແບບ
-
ການປ່ຽນແປງພຶດຕິກຳການປະຕິເສດ
-
ຄວາມຖີ່ຂອງການຫຼອນ
-
ອັດຕາເງິນເຟີ້ຂອງຄວາມຍາວຕອບສະໜອງ
ການເພີ່ມປະສິດທິພາບສາມາດປ່ຽນແປງພຶດຕິກຳໄດ້ຢ່າງໜ້າປະຫຼາດໃຈ. ຢ່າງແປກປະຫຼາດ. ຢ່າງໜ້າລຳຄານ. ຄາດເດົາໄດ້, ເມື່ອຄິດເຖິງຄວາມຫຼັງ.
12) ລາຍການກວດສອບ: ວິທີການເພີ່ມປະສິດທິພາບຂອງຮູບແບບ AI ເທື່ອລະຂັ້ນຕອນ ✅🤖
ຖ້າທ່ານຕ້ອງການລຳດັບການດຳເນີນງານທີ່ຊັດເຈນສຳລັບ ວິທີການເພີ່ມປະສິດທິພາບຂອງຮູບແບບ AI , ນີ້ແມ່ນຂັ້ນຕອນການເຮັດວຽກທີ່ມັກຈະເຮັດໃຫ້ຄົນມີສະຕິ:
-
ກຳນົດຄວາມສຳເລັດ
ເລືອກຕົວຊີ້ວັດຫຼັກ 1-2 ຢ່າງ (ຄວາມໜ่วงເວລາ, ຕົ້ນທຶນ, ປະລິມານການຜະລິດ, ຄຸນນະພາບ). -
ວັດແທກ
ປະລິມານວຽກຕົວຈິງຂອງໂປຣໄຟລ໌ພື້ນຖານ, ບັນທຶກ p50/p95, ໜ່ວຍຄວາມຈຳ, ແລະຄ່າໃຊ້ຈ່າຍ. ( PyTorch Profiler ) -
ແກ້ໄຂບັນຫາຄວາມແອອັດຂອງທໍ່ສົ່ງ
ຂໍ້ມູນ ການໂຫຼດຂໍ້ມູນ, ການສ້າງໂທເຄັນ, ການປະມວນຜົນລ່ວງໜ້າ, ການລວບລວມຂໍ້ມູນເປັນກຸ່ມ. -
ນຳໃຊ້ການຄຳນວນທີ່ມີຄວາມສ່ຽງຕ່ຳ ຄວາມແມ່ນ
ຍຳແບບປະສົມ, ການເພີ່ມປະສິດທິພາບຂອງເຄີເນລ, ການ batching ທີ່ດີກວ່າ. -
ລອງໃຊ້ການເພີ່ມປະສິດທິພາບຂອງຄອມໄພເລີ/ຣັນໄທມ໌
ການບັນທຶກກຣາຟ, ເວລາຣັນໄທມ໌ການອະນຸມານ, ການລວມຕົວປະຕິບັດການ. ( ບົດແນະນຳtorch.compile, ເອກະສານ ONNX Runtime ) -
ຫຼຸດຜ່ອນຄ່າໃຊ້ຈ່າຍຂອງຮູບແບບ.
ກັ່ນຕອງປະລິມານຢ່າງລະມັດລະວັງ, ກັ່ນຖ້າທ່ານສາມາດເຮັດໄດ້, ຕັດแต่งກິ່ງຖ້າເໝາະສົມ. -
ປັບແຕ່ງການບໍລິການ
, ການຈັດເກັບຂໍ້ມູນ, ການເຮັດວຽກພ້ອມກັນ, ການທົດສອບການໂຫຼດ, ການແກ້ໄຂຄວາມຊັກຊ້າຂອງຫາງ. -
ກວດສອບຄຸນນະພາບ
ດໍາເນີນການທົດສອບການຖົດຖອຍ ແລະ ປຽບທຽບຜົນຜະລິດຄຽງຄູ່ກັນ. -
ເຮັດຊ້ຳໆ
ການປ່ຽນແປງເລັກນ້ອຍ, ບັນທຶກທີ່ຊັດເຈນ, ເຮັດຊ້ຳອີກ. ບໍ່ໂດດເດັ່ນ - ມີປະສິດທິພາບ.
ແລະແມ່ນແລ້ວ, ນີ້ຍັງຄົງເປັນ ວິທີການເພີ່ມປະສິດທິພາບຂອງຮູບແບບ AI ເຖິງແມ່ນວ່າມັນຈະຮູ້ສຶກຄືກັບ "ວິທີການຢຸດການຢຽບຄ້ອນຕີ". ສິ່ງດຽວກັນ.
13) ຄວາມຜິດພາດທົ່ວໄປ (ສະນັ້ນເຈົ້າຈຶ່ງບໍ່ເຮັດຊ້ຳອີກຄືກັບພວກເຮົາຄົນອື່ນໆ) 🙃
-
ການເພີ່ມປະສິດທິພາບກ່ອນການວັດແທກ
ເຈົ້າຈະເສຍເວລາ. ແລະຫຼັງຈາກນັ້ນເຈົ້າຈະເພີ່ມປະສິດທິພາບໃນສິ່ງທີ່ຜິດພາດຢ່າງໝັ້ນໃຈ... -
ການໄລ່ຕາມມາດຕະຖານດຽວ
ມາດຕະຖານແມ່ນຜິດພາດ. ປະລິມານວຽກຂອງເຈົ້າແມ່ນຄວາມຈິງ. -
ການບໍ່ສົນໃຈ
ບັນຫາໜ່ວຍຄວາມຈຳ ບັນຫາໜ່ວຍຄວາມຈຳເຮັດໃຫ້ເກີດການຊ້າລົງ, ການຂັດຂ້ອງ, ແລະ ການສັ່ນໄຫວ. ( ເຂົ້າໃຈການໃຊ້ໜ່ວຍຄວາມຈຳ CUDA ໃນ PyTorch ) -
ການວັດແທກປະລິມານຫຼາຍເກີນໄປໄວເກີນໄປ ການວັດແທກ
ປະລິມານບິດຕ່ຳອາດເປັນສິ່ງທີ່ໜ້າອັດສະຈັນ, ແຕ່ໃຫ້ເລີ່ມຕົ້ນດ້ວຍຂັ້ນຕອນທີ່ປອດໄພກວ່າກ່ອນ. -
ບໍ່ມີແຜນການຍ້ອນກັບ
ຖ້າທ່ານບໍ່ສາມາດກັບຄືນໄດ້ໄວ, ທຸກໆການນຳໃຊ້ຈະກາຍເປັນເລື່ອງທີ່ໜ້າຕຶງຄຽດ. ຄວາມຕຶງຄຽດເຮັດໃຫ້ເກີດຂໍ້ຜິດພາດ.
ໝາຍເຫດປິດ: ວິທີການຂອງມະນຸດໃນການເພີ່ມປະສິດທິພາບ 😌⚡
ວິທີການເພີ່ມປະສິດທິພາບຂອງຮູບແບບ AI ບໍ່ແມ່ນການ hack ດ່ຽວ. ມັນເປັນຂະບວນການທີ່ມີຫຼາຍຊັ້ນ: ວັດແທກ, ແກ້ໄຂ pipeline, ໃຊ້ compilers ແລະ runtimes, ປັບແຕ່ງ serving, ຈາກນັ້ນຫົດຮູບແບບດ້ວຍການ quantization ຫຼື distillation ຖ້າທ່ານຕ້ອງການ. ເຮັດມັນເທື່ອລະຂັ້ນຕອນ, ຮັກສາ guardrails ທີ່ມີຄຸນນະພາບ, ແລະຢ່າໄວ້ວາງໃຈ "ມັນຮູ້ສຶກໄວຂຶ້ນ" ເປັນ metric (ຄວາມຮູ້ສຶກຂອງເຈົ້າດີ, ຄວາມຮູ້ສຶກຂອງເຈົ້າບໍ່ແມ່ນ profiler).
ຖ້າທ່ານຕ້ອງການເອົາກັບບ້ານທີ່ສັ້ນທີ່ສຸດ:
-
ວັດແທກກ່ອນ🔍
-
ເພີ່ມປະສິດທິພາບຂອງທໍ່ສົ່ງຕໍ່ໄປ 🧵
-
ຈາກນັ້ນປັບຮູບແບບໃຫ້ດີທີ່ສຸດ 🧠
-
ຈາກນັ້ນເພີ່ມປະສິດທິພາບການຮັບໃຊ້ 🏗️
-
ກວດສອບຄຸນນະພາບຢ່າງຕໍ່ເນື່ອງ✅
ແລະຖ້າມັນຊ່ວຍໄດ້, ຈົ່ງເຕືອນຕົວເອງວ່າ: ເປົ້າໝາຍບໍ່ແມ່ນ "ຮູບແບບທີ່ສົມບູນແບບ". ເປົ້າໝາຍແມ່ນຮູບແບບທີ່ໄວ, ລາຄາບໍ່ແພງ, ແລະ ໜ້າເຊື່ອຖືພຽງພໍທີ່ເຈົ້າສາມາດນອນຫຼັບໄດ້ໃນຕອນກາງຄືນ... ສ່ວນຫຼາຍຄືນ 😴.
ຄຳຖາມທີ່ຖືກຖາມເລື້ອຍໆ
ການເພີ່ມປະສິດທິພາບຂອງຮູບແບບ AI ໝາຍຄວາມວ່າແນວໃດໃນການປະຕິບັດ
"ການເພີ່ມປະສິດທິພາບ" ໂດຍປົກກະຕິແລ້ວໝາຍເຖິງການປັບປຸງຂໍ້ຈຳກັດຫຼັກອັນໜຶ່ງຄື: ຄວາມຊັກຊ້າ, ຄ່າໃຊ້ຈ່າຍ, ຮອຍຕີນໜ່ວຍຄວາມຈຳ, ຄວາມຖືກຕ້ອງ, ຄວາມໝັ້ນຄົງ, ຫຼື ອັດຕາການໃຫ້ບໍລິການ. ສ່ວນທີ່ຍາກແມ່ນການແລກປ່ຽນ - ການສົ່ງເສີມພື້ນທີ່ໜຶ່ງສາມາດເຮັດໃຫ້ອີກພື້ນທີ່ໜຶ່ງເສຍຫາຍໄດ້. ວິທີການທີ່ໃຊ້ໄດ້ຈິງແມ່ນການເລືອກເປົ້າໝາຍທີ່ຊັດເຈນ (ເຊັ່ນ: ຄວາມຊັກຊ້າຂອງ p95 ຫຼື ເວລາຕໍ່ຄຸນນະພາບ) ແລະ ເພີ່ມປະສິດທິພາບໄປສູ່ມັນ. ຖ້າບໍ່ມີເປົ້າໝາຍ, ມັນງ່າຍທີ່ຈະ "ປັບປຸງ" ແລະຍັງສູນເສຍຢູ່.
ວິທີການເພີ່ມປະສິດທິພາບຂອງຮູບແບບ AI ໂດຍບໍ່ເຮັດໃຫ້ຄຸນນະພາບຫຼຸດລົງຢ່າງງຽບໆ
ຖືວ່າທຸກໆຄວາມໄວ ຫຼື ການປ່ຽນແປງຄ່າໃຊ້ຈ່າຍຄືກັບການຖົດຖອຍທີ່ງຽບສະຫງົບທີ່ອາດເກີດຂຶ້ນ. ໃຊ້ແນວປ້ອງກັນເຊັ່ນ: ການກະຕຸ້ນທອງຄຳ, ຕົວຊີ້ວັດໜ້າວຽກ, ແລະ ການກວດສອບຈຸດດ່ວນຂອງມະນຸດຢ່າງວ່ອງໄວ. ກຳນົດຂອບເຂດທີ່ຊັດເຈນສຳລັບການເລື່ອນຄຸນນະພາບທີ່ຍອມຮັບໄດ້ ແລະ ປຽບທຽບຜົນຜະລິດຄຽງຄູ່ກັນ. ສິ່ງນີ້ປ້ອງກັນບໍ່ໃຫ້ "ມັນໄວກວ່າ" ກາຍເປັນ "ເປັນຫຍັງມັນຈຶ່ງກາຍເປັນເລື່ອງແປກໃນການຜະລິດຢ່າງກະທັນຫັນ?" ຫຼັງຈາກທີ່ທ່ານສົ່ງສິນຄ້າ.
ສິ່ງທີ່ຄວນວັດແທກກ່ອນທີ່ທ່ານຈະເລີ່ມຕົ້ນການເພີ່ມປະສິດທິພາບ
ເລີ່ມຕົ້ນດ້ວຍເປີເຊັນໄທລ໌ຄວາມໜ่วงເວລາ (p50, p95, p99), ປະລິມານການຜະລິດ (ໂທເຄັນ/ວິນາທີ ຫຼື ຄຳຮ້ອງຂໍ/ວິນາທີ), ການນຳໃຊ້ GPU, ແລະ VRAM/RAM ສູງສຸດ. ຕິດຕາມຕົ້ນທຶນຕໍ່ການອະນຸມານ ຫຼື ຕໍ່ໂທເຄັນ 1k ຖ້າຕົ້ນທຶນເປັນຂໍ້ຈຳກັດ. ກຳນົດສະຖານະການຕົວຈິງທີ່ທ່ານຮັບໃຊ້, ບໍ່ແມ່ນການກະຕຸ້ນເຕືອນຂອງຫຼິ້ນ. ການຮັກສາ “ບັນທຶກຄວາມສົມບູນແບບ” ຂະໜາດນ້ອຍຊ່ວຍໃຫ້ທ່ານຫຼີກລ່ຽງການຄາດເດົາ ແລະ ການເຮັດຜິດພາດຊ້ຳໆ.
ໄຊຊະນະທີ່ວ່ອງໄວ ແລະ ມີຄວາມສ່ຽງຕໍ່າ ສຳລັບການປະຕິບັດການຝຶກອົບຮົມ
ຄວາມແມ່ນຍຳແບບປະສົມ (FP16/BF16) ມັກຈະເປັນຕົວກະຕຸ້ນທຳອິດທີ່ໄວທີ່ສຸດ, ແຕ່ໃຫ້ລະວັງຄວາມຜິດປົກກະຕິທາງດ້ານຕົວເລກ. ຖ້າຂະໜາດຂອງ batch ມີຈຳກັດ, ການສະສົມ gradient ສາມາດເຮັດໃຫ້ການເພີ່ມປະສິດທິພາບມີຄວາມໝັ້ນຄົງໂດຍບໍ່ເຮັດໃຫ້ໜ່ວຍຄວາມຈຳເສຍຫາຍ. ການກວດສອບ gradient ຈະແລກປ່ຽນການຄຳນວນເພີ່ມເຕີມສຳລັບໜ່ວຍຄວາມຈຳທີ່ຕ່ຳກວ່າ, ເຮັດໃຫ້ສະພາບການທີ່ໃຫຍ່ກວ່າ. ຢ່າລະເລີຍ tokenization ແລະ ການປັບແຕ່ງ dataloader - ພວກມັນສາມາດເຮັດໃຫ້ GPU ບໍ່ມີແຮງ.
ເວລາທີ່ຈະໃຊ້ torch.compile, ONNX Runtime, ຫຼື TensorRT
ເຄື່ອງມືເຫຼົ່ານີ້ແນໃສ່ຄ່າໃຊ້ຈ່າຍໃນການປະຕິບັດງານ: ການຈັບກຣາຟ, ການລວມເຄີເນລ, ແລະ ການເພີ່ມປະສິດທິພາບຂອງກຣາຟໃນເວລາແລ່ນ. ພວກມັນສາມາດສົ່ງຜົນໃຫ້ຄວາມໄວໃນການອະນຸມານທີ່ສະອາດ, ແຕ່ຜົນໄດ້ຮັບແຕກຕ່າງກັນໄປຕາມຮູບຮ່າງຂອງໂມເດວ ແລະ ຮາດແວ. ການຕັ້ງຄ່າບາງຢ່າງຮູ້ສຶກຄືກັບເວດມົນ; ບາງອັນກໍ່ເຄື່ອນທີ່ໜ້ອຍ. ຄາດວ່າຈະມີຄວາມອ່ອນໄຫວຕໍ່ການປ່ຽນແປງຮູບຮ່າງ ແລະ ຂໍ້ຜິດພາດ "gremlin" ບາງຄັ້ງຄາວ - ວັດແທກກ່ອນ ແລະ ຫຼັງການເຮັດວຽກຕົວຈິງຂອງທ່ານ.
ວ່າການວັດປະລິມານຄຸ້ມຄ່າຫຼືບໍ່, ແລະວິທີການຫຼີກລ່ຽງການໄປໄກເກີນໄປ
ການວັດແທກປະລິມານສາມາດຫຼຸດຜ່ອນໜ່ວຍຄວາມຈຳ ແລະ ເລັ່ງການອະນຸມານ, ໂດຍສະເພາະກັບ INT8, ແຕ່ຄຸນນະພາບອາດຈະຫຼຸດຜ່ານກໍລະນີຂອບ. ຕົວເລືອກບິດຕ່ຳກວ່າ (ເຊັ່ນ INT4/k-bit) ນຳມາເຊິ່ງການປະຫຍັດທີ່ໃຫຍ່ກວ່າດ້ວຍຄວາມສ່ຽງທີ່ສູງກວ່າ. ນິໄສທີ່ປອດໄພທີ່ສຸດແມ່ນການປະເມີນໃນຊຸດການທົດສອບຕົວຈິງ ແລະ ປຽບທຽບຜົນຜະລິດ, ບໍ່ແມ່ນຄວາມຮູ້ສຶກພາຍໃນ. ເລີ່ມຕົ້ນດ້ວຍຂັ້ນຕອນທີ່ປອດໄພກວ່າກ່ອນ, ຈາກນັ້ນໄປໃຊ້ຄວາມແມ່ນຍຳຕ່ຳກວ່າເທົ່ານັ້ນຖ້າຈຳເປັນ.
ຄວາມແຕກຕ່າງລະຫວ່າງການຕັດแต่งກິ່ງ ແລະ ການກັ່ນເພື່ອຫຼຸດຂະໜາດຂອງແບບຈຳລອງ
ການຕັດแต่งກິ່ງງ່າຈະກຳຈັດຕົວກຳນົດ "ນ້ຳໜັກຕາຍ" ແລະມັກຈະຕ້ອງການການຝຶກອົບຮົມຄືນໃໝ່ເພື່ອຟື້ນຟູຄຸນນະພາບ, ໂດຍສະເພາະເມື່ອເຮັດຢ່າງຈິງຈັງ. ການກັ່ນກອງຝຶກອົບຮົມຮູບແບບນັກຮຽນຂະໜາດນ້ອຍກວ່າໃຫ້ຮຽນແບບພຶດຕິກຳຂອງຄູທີ່ໃຫຍ່ກວ່າ, ແລະມັນສາມາດເປັນຜົນຕອບແທນຈາກການລົງທຶນໃນໄລຍະຍາວທີ່ເຂັ້ມແຂງກວ່າການວັດປະລິມານທີ່ຮຸນແຮງ. ຖ້າທ່ານຕ້ອງການຮູບແບບຂະໜາດນ້ອຍກວ່າທີ່ມີພຶດຕິກຳຄ້າຍຄືກັນ ແລະ ຍັງຄົງສະຖຽນລະພາບ, ການກັ່ນກອງມັກຈະເປັນເສັ້ນທາງທີ່ສະອາດກວ່າ.
ວິທີການຫຼຸດຜ່ອນຄ່າໃຊ້ຈ່າຍໃນການອະນຸມານ ແລະ ຄວາມຊັກຊ້າຜ່ານການປັບປຸງການໃຫ້ບໍລິການ
ການໃຫ້ບໍລິການແມ່ນບ່ອນທີ່ການເພີ່ມປະສິດທິພາບກາຍເປັນສິ່ງທີ່ເຫັນໄດ້ຊັດເຈນ: ການເປັນກຸ່ມຈະເພີ່ມປະລິມານຂໍ້ມູນ ແຕ່ສາມາດສົ່ງຜົນກະທົບຕໍ່ຄວາມໜ่วงເວລາຖ້າເຮັດຫຼາຍເກີນໄປ, ສະນັ້ນ ຄວນປັບມັນຢ່າງລະມັດລະວັງ. ການແຄຊ (ການແຄຊແບບວ່ອງໄວ ແລະ ການນຳໃຊ້ແຄຊ KV ຄືນໃໝ່) ສາມາດມີປະລິມານຫຼາຍເມື່ອສະພາບການຊ້ຳກັນ. ຜົນຜະລິດການສະຕຣີມປັບປຸງຄວາມໄວທີ່ຮັບຮູ້ໄດ້ເຖິງແມ່ນວ່າເວລາທັງໝົດຈະຄ້າຍຄືກັນ. ນອກຈາກນີ້, ຊອກຫາຄ່າໃຊ້ຈ່າຍແບບໂທເຄັນຕໍ່ໂທເຄັນໃນສະແຕັກຂອງທ່ານ - ວຽກຕໍ່ໂທເຄັນຂະໜາດນ້ອຍເພີ່ມຂຶ້ນໄວ.
ເປັນຫຍັງຄວາມຊັກຊ້າຂອງຫາງຈຶ່ງມີຄວາມສຳຄັນຫຼາຍເມື່ອເພີ່ມປະສິດທິພາບຂອງຮູບແບບ AI
ຄ່າສະເລ່ຍສາມາດເບິ່ງດີຫຼາຍໃນຂະນະທີ່ p99 ເປັນໄພພິບັດ, ແລະຜູ້ໃຊ້ມັກຈະອາໄສຢູ່ໃນຫາງ. ຄວາມຊັກຊ້າຂອງຫາງມັກຈະມາຈາກ jitter: ການແຕກແຍກຂອງໜ່ວຍຄວາມຈຳ, ການເພີ່ມຂຶ້ນຂອງການປະມວນຜົນກ່ອນຂອງ CPU, ການຊ້າລົງຂອງ tokenization, ຫຼືພຶດຕິກຳການ batching ທີ່ບໍ່ດີ. ນັ້ນແມ່ນເຫດຜົນທີ່ຄູ່ມືເນັ້ນໜັກເຖິງເປີເຊັນໄທລ໌ ແລະ ປະລິມານວຽກຕົວຈິງ. ຖ້າທ່ານພຽງແຕ່ເພີ່ມປະສິດທິພາບ p50, ທ່ານຍັງສາມາດສົ່ງປະສົບການທີ່ "ຮູ້ສຶກວ່າຊ້າແບບສຸ່ມ."
ເອກະສານອ້າງອີງ
-
Amazon Web Services (AWS) - AWS CloudWatch ເປີເຊັນໄທລ໌ (ຄຳນິຍາມສະຖິຕິ) - docs.aws.amazon.com
-
Google - The Tail at Scale (ວິທີປະຕິບັດທີ່ດີທີ່ສຸດກ່ຽວກັບຄວາມຊັກຊ້າຂອງ tail) - sre.google
-
Google - ຈຸດປະສົງລະດັບການບໍລິການ (ປຶ້ມ SRE) - ເປີເຊັນຄວາມຊັກຊ້າ - sre.google
-
PyTorch - torch.compile - docs.pytorch.org
-
PyTorch - FullyShardedData Parallel (FSDP) - docs.pytorch.org
-
PyTorch - PyTorch Profiler - docs.pytorch.org
-
PyTorch - ຄວາມໝາຍຂອງ CUDA: ການຈັດການໜ່ວຍຄວາມຈຳ (ບັນທຶກການຈັດສັນໜ່ວຍຄວາມຈຳ CUDA) - docs.pytorch.org
-
PyTorch - ຄວາມແມ່ນຍໍາປະສົມອັດຕະໂນມັດ (torch.amp / AMP) - docs.pytorch.org
-
PyTorch - torch.utils.checkpoint - docs.pytorch.org
-
PyTorch - ຄູ່ມືການປັບແຕ່ງປະສິດທິພາບ - docs.pytorch.org
-
PyTorch - ບົດແນະນຳການຕັດแต่งກິ່ງ - docs.pytorch.org
-
PyTorch - ເຂົ້າໃຈການໃຊ້ໜ່ວຍຄວາມຈຳ CUDA ໃນ PyTorch - docs.pytorch.org
-
PyTorch - ບົດແນະນຳ / ພາບລວມຂອງ torch.compile - docs.pytorch.org
-
ONNX Runtime - ເອກະສານ ONNX Runtime - onnxruntime.ai
-
NVIDIA - TensorRT - docs.nvidia.com
-
NVIDIA - ປະເພດປະລິມານ TensorRT - docs.nvidia.com
-
NVIDIA - ລະບົບ Nsight - developer.nvidia.com
-
NVIDIA - ເຊີບເວີການອະນຸມານ Triton - ການແບ່ງກຸ່ມແບບໄດນາມິກ - docs.nvidia.com
-
DeepSpeed - ZeRO Stage 3 - deepspeed.readthedocs.io
-
bitsandbytes (ພື້ນຖານ bitsandbytes) - bitsandbytes - github.com
-
ກອດໜ້າ - ເລັ່ງ: ຄູ່ມືການສະສົມສີ - huggingface.co
-
ໜ້າກອດ - ເອກະສານ Tokenizers - huggingface.co
-
ໜ້າກອດ - Transformers: ຄູ່ມື PEFT - huggingface.co
-
ໜ້າກອດ - ຄຳອະທິບາຍກ່ຽວກັບ Transformers: KV cache - huggingface.co
-
ກອດແຟສ - Transformers: ເຄື່ອງໝາຍໂທເຄັນ “ໄວ” (ຄລາສເຄື່ອງໝາຍໂທເຄັນ) - huggingface.co
-
arXiv - ການກັ່ນກອງຄວາມຮູ້ໃນເຄືອຂ່າຍປະສາດ (Hinton et al., 2015) - arxiv.org
-
arXiv - LoRA: ການປັບຕົວລະດັບຕ່ຳຂອງຮູບແບບພາສາຂະໜາດໃຫຍ່ - arxiv.org
-
arXiv - FlashAttention: ການເອົາໃຈໃສ່ທີ່ແນ່ນອນທີ່ໄວ ແລະ ມີປະສິດທິພາບໃນຄວາມຈຳດ້ວຍ IO-Awareness - arxiv.org