ວິທີການເພີ່ມປະສິດທິພາບຂອງຮູບແບບ AI

ວິທີການເພີ່ມປະສິດທິພາບຂອງຮູບແບບ AI

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

ບົດຮຽນຫຼັກ:

ຂໍ້ຈຳກັດ : ເລືອກໜຶ່ງ ຫຼື ສອງຕົວຊີ້ວັດເປົ້າໝາຍ; ການເພີ່ມປະສິດທິພາບແມ່ນພູມສັນຖານຂອງການແລກປ່ຽນ, ບໍ່ແມ່ນໄຊຊະນະໂດຍບໍ່ເສຍຄ່າ.

ການວັດແທກ : ກຳນົດປະລິມານວຽກຕົວຈິງດ້ວຍ p50/p95/p99, ປະລິມານວຽກ, ການນຳໃຊ້ ແລະ ຈຸດສູງສຸດຂອງໜ່ວຍຄວາມຈຳ.

Pipeline : ແກ້ໄຂ tokenisation, dataloaders, preprocessing, ແລະ batching ກ່ອນທີ່ຈະແຕະຕ້ອງຮູບແບບ.

ການຮັບໃຊ້ : ໃຊ້ການເກັບຂໍ້ມູນໄວ້ໃນແຄດ, ການແບ່ງກຸ່ມໂດຍເຈດຕະນາ, ການປັບແຕ່ງການເຮັດວຽກພ້ອມກັນ, ແລະ ຕິດຕາມເບິ່ງຄວາມຊັກຊ້າຂອງຫາງຢ່າງໃກ້ຊິດ.

Guardrails : ດໍາເນີນການ prompts golden, metrics ໜ້າວຽກ, ແລະ ການກວດສອບຈຸດຫຼັງຈາກການປ່ຽນແປງປະສິດທິພາບແຕ່ລະຄັ້ງ.

ວິທີການເພີ່ມປະສິດທິພາບຂອງຮູບແບບ AI Infographic

🔗 ວິທີການປະເມີນຮູບແບບ 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: ຄວາມໄວມາຈາກໃສ 🏎️

ນີ້ແມ່ນຊັ້ນ “ເຮັດໃຫ້ຄອມພິວເຕີເຮັດສິ່ງຂອງຄອມພິວເຕີທີ່ສະຫຼາດກວ່າ”.

ເຕັກນິກທົ່ວໄປ:

ເວົ້າງ່າຍໆ: ຮູບແບບຂອງເຈົ້າອາດຈະໄວທາງຄະນິດສາດ, ແຕ່ຊ້າໃນການດຳເນີນງານ. ໂປຣແກຣມຄອມໄພເລີແກ້ໄຂບາງຢ່າງ.

ບັນທຶກການປະຕິບັດ (ຫຼື ຮອຍແປ້ວ)

  • ການເພີ່ມປະສິດທິພາບເຫຼົ່ານີ້ອາດຈະອ່ອນໄຫວຕໍ່ການປ່ຽນແປງຮູບຮ່າງຂອງຮູບແບບ.

  • ບາງລຸ້ນເລັ່ງຄວາມໄວໄດ້ຫຼາຍ, ບາງລຸ້ນຄ່ອຍໆສັ່ນ.

  • ບາງຄັ້ງເຈົ້າໄດ້ຮັບຄວາມໄວເພີ່ມຂຶ້ນ ແລະ ແມງໄມ້ທີ່ງົງງັນ - ຄືກັບ 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. ກຳນົດຄວາມສຳເລັດ
    ເລືອກຕົວຊີ້ວັດຫຼັກ 1-2 ຢ່າງ (ຄວາມໜ่วงເວລາ, ຕົ້ນທຶນ, ປະລິມານການຜະລິດ, ຄຸນນະພາບ).

  2. ວັດແທກ
    ປະລິມານວຽກຕົວຈິງຂອງໂປຣໄຟລ໌ພື້ນຖານ, ບັນທຶກ p50/p95, ໜ່ວຍຄວາມຈຳ, ແລະຄ່າໃຊ້ຈ່າຍ. ( PyTorch Profiler )

  3. ແກ້ໄຂບັນຫາຄວາມແອອັດຂອງທໍ່ສົ່ງ
    ຂໍ້ມູນ ການໂຫຼດຂໍ້ມູນ, ການສ້າງໂທເຄັນ, ການປະມວນຜົນລ່ວງໜ້າ, ການລວບລວມຂໍ້ມູນເປັນກຸ່ມ.

  4. ນຳໃຊ້ການຄຳນວນທີ່ມີຄວາມສ່ຽງຕ່ຳ ຄວາມແມ່ນ
    ຍຳແບບປະສົມ, ການເພີ່ມປະສິດທິພາບຂອງເຄີເນລ, ການ batching ທີ່ດີກວ່າ.

  5. ລອງໃຊ້ການເພີ່ມປະສິດທິພາບຂອງຄອມໄພເລີ/ຣັນໄທມ໌
    ການບັນທຶກກຣາຟ, ເວລາຣັນໄທມ໌ການອະນຸມານ, ການລວມຕົວປະຕິບັດການ. ( ບົດແນະນຳ torch.compile , ເອກະສານ ONNX Runtime )

  6. ຫຼຸດຜ່ອນຄ່າໃຊ້ຈ່າຍຂອງຮູບແບບ.
    ກັ່ນຕອງປະລິມານຢ່າງລະມັດລະວັງ, ກັ່ນຖ້າທ່ານສາມາດເຮັດໄດ້, ຕັດแต่งກິ່ງຖ້າເໝາະສົມ.

  7. ປັບແຕ່ງການບໍລິການ
    , ການຈັດເກັບຂໍ້ມູນ, ການເຮັດວຽກພ້ອມກັນ, ການທົດສອບການໂຫຼດ, ການແກ້ໄຂຄວາມຊັກຊ້າຂອງຫາງ.

  8. ກວດສອບຄຸນນະພາບ
    ດໍາເນີນການທົດສອບການຖົດຖອຍ ແລະ ປຽບທຽບຜົນຜະລິດຄຽງຄູ່ກັນ.

  9. ເຮັດຊ້ຳໆ
    ການປ່ຽນແປງເລັກນ້ອຍ, ບັນທຶກທີ່ຊັດເຈນ, ເຮັດຊ້ຳອີກ. ບໍ່ໂດດເດັ່ນ - ມີປະສິດທິພາບ.

ແລະແມ່ນແລ້ວ, ນີ້ຍັງຄົງເປັນ ວິທີການເພີ່ມປະສິດທິພາບຂອງຮູບແບບ 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, ທ່ານຍັງສາມາດສົ່ງປະສົບການທີ່ "ຮູ້ສຶກວ່າຊ້າແບບສຸ່ມ."

ເອກະສານອ້າງອີງ

  1. Amazon Web Services (AWS) - AWS CloudWatch ເປີເຊັນໄທລ໌ (ຄຳນິຍາມສະຖິຕິ) - docs.aws.amazon.com

  2. Google - The Tail at Scale (ວິທີປະຕິບັດທີ່ດີທີ່ສຸດກ່ຽວກັບຄວາມຊັກຊ້າຂອງ tail) - sre.google

  3. Google - ຈຸດປະສົງລະດັບການບໍລິການ (ປຶ້ມ SRE) - ເປີເຊັນຄວາມຊັກຊ້າ - sre.google

  4. PyTorch - torch.compile - docs.pytorch.org

  5. PyTorch - FullyShardedData Parallel (FSDP) - docs.pytorch.org

  6. PyTorch - PyTorch Profiler - docs.pytorch.org

  7. PyTorch - ຄວາມໝາຍຂອງ CUDA: ການຈັດການໜ່ວຍຄວາມຈຳ (ບັນທຶກການຈັດສັນໜ່ວຍຄວາມຈຳ CUDA) - docs.pytorch.org

  8. PyTorch - ຄວາມແມ່ນຍໍາປະສົມອັດຕະໂນມັດ (torch.amp / AMP) - docs.pytorch.org

  9. PyTorch - torch.utils.checkpoint - docs.pytorch.org

  10. PyTorch - ຄູ່ມືການປັບແຕ່ງປະສິດທິພາບ - docs.pytorch.org

  11. PyTorch - ບົດແນະນຳການຕັດแต่งກິ່ງ - docs.pytorch.org

  12. PyTorch - ເຂົ້າໃຈການໃຊ້ໜ່ວຍຄວາມຈຳ CUDA ໃນ PyTorch - docs.pytorch.org

  13. PyTorch - ບົດແນະນຳ / ພາບລວມຂອງ torch.compile - docs.pytorch.org

  14. ONNX Runtime - ເອກະສານ ONNX Runtime - onnxruntime.ai

  15. NVIDIA - TensorRT - docs.nvidia.com

  16. NVIDIA - ປະເພດປະລິມານ TensorRT - docs.nvidia.com

  17. NVIDIA - ລະບົບ Nsight - developer.nvidia.com

  18. NVIDIA - ເຊີບເວີການອະນຸມານ Triton - ການແບ່ງກຸ່ມແບບໄດນາມິກ - docs.nvidia.com

  19. DeepSpeed ​​- ZeRO Stage 3 - deepspeed.readthedocs.io

  20. bitsandbytes (ພື້ນຖານ bitsandbytes) - bitsandbytes - github.com

  21. ກອດໜ້າ - ເລັ່ງ: ຄູ່ມືການສະສົມສີ - huggingface.co

  22. ໜ້າກອດ - ເອກະສານ Tokenizers - huggingface.co

  23. ໜ້າກອດ - Transformers: ຄູ່ມື PEFT - huggingface.co

  24. ໜ້າກອດ - ຄຳອະທິບາຍກ່ຽວກັບ Transformers: KV cache - huggingface.co

  25. ກອດແຟສ - Transformers: ເຄື່ອງໝາຍໂທເຄັນ “ໄວ” (ຄລາສເຄື່ອງໝາຍໂທເຄັນ) - huggingface.co

  26. arXiv - ການກັ່ນກອງຄວາມຮູ້ໃນເຄືອຂ່າຍປະສາດ (Hinton et al., 2015) - arxiv.org

  27. arXiv - LoRA: ການປັບຕົວລະດັບຕ່ຳຂອງຮູບແບບພາສາຂະໜາດໃຫຍ່ - arxiv.org

  28. arXiv - FlashAttention: ການເອົາໃຈໃສ່ທີ່ແນ່ນອນທີ່ໄວ ແລະ ມີປະສິດທິພາບໃນຄວາມຈຳດ້ວຍ IO-Awareness - arxiv.org

ຊອກຫາ AI ລ່າສຸດໄດ້ທີ່ຮ້ານ AI Assistant ຢ່າງເປັນທາງການ

ກ່ຽວກັບພວກເຮົາ

ກັບໄປທີ່ບລັອກ