course documentation

ကောင်းမွန်သော Issue တစ်ခုကို ရေးသားနည်း

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

ကောင်းမွန်သော Issue တစ်ခုကို ရေးသားနည်း

Ask a Question Open In Colab Open In Studio Lab

Hugging Face libraries တွေထဲက တစ်ခုခုမှာ မှားနေတယ်လို့ ထင်ရတဲ့အရာတစ်ခုကို သင်ကြုံတွေ့ရတဲ့အခါ၊ ကျွန်တော်တို့ ပြင်ဆင်နိုင်ဖို့ သေချာပေါက် အကြောင်းကြားသင့်ပါတယ် (open source library တွေအားလုံးအတွက်လည်း ဒီအတိုင်းပါပဲ)။ သင့်ရဲ့ code မှာပဲ bug ကရှိတာလား ဒါမှမဟုတ် ကျွန်တော်တို့ library တွေထဲက တစ်ခုမှာလားဆိုတာ သင်လုံးဝမသေချာရင်၊ ပထမဆုံး စစ်ဆေးရမယ့်နေရာက forums ပါပဲ။ community က ဒါကို ရှာဖွေဖို့ သင့်ကို ကူညီပေးပါလိမ့်မယ်၊ ပြီးတော့ Hugging Face team ကလည်း အဲဒီက ဆွေးနွေးမှုတွေကို အနီးကပ် စောင့်ကြည့်နေပါတယ်။

သင့်မှာ bug တစ်ခု သေချာပြီဆိုရင်၊ ပထမအဆင့်က minimal reproducible example တစ်ခုကို တည်ဆောက်ဖို့ပါပဲ။

Minimal Reproducible Example တစ်ခု ဖန်တီးခြင်း

bug ကို ထုတ်လုပ်တဲ့ code အပိုင်းကို ခွဲထုတ်ဖို့ အလွန်အရေးကြီးပါတယ်။ ဘာလို့လဲဆိုတော့ Hugging Face team မှာ ဘယ်သူမှ မှော်ဆရာ မဟုတ်သေးသလို (yet)၊ သူတို့မမြင်ရတဲ့အရာကို ပြင်လို့လည်း မရလို့ပါပဲ။ minimal reproducible example တစ်ခုဟာ နာမည်က ဖော်ပြတဲ့အတိုင်း reproducible ဖြစ်သင့်ပါတယ်။ ဒါက သင်အသုံးပြုနေတဲ့ မည်သည့် external files တွေ ဒါမှမဟုတ် data တွေပေါ်မှာမှ မှီခိုမနေသင့်ဘူးလို့ ဆိုလိုပါတယ်။ သင်အသုံးပြုနေတဲ့ data ကို သင်ရဲ့ တကယ့် data နဲ့ ဆင်တူတဲ့ dummy values တွေနဲ့ အစားထိုးပြီး တူညီတဲ့ error ကို ထုတ်လုပ်အောင် ကြိုးစားပါ။

🚨 🤗 Transformers repository ထဲက issues အများအပြားဟာ ၎င်းတို့ကို reproduce လုပ်ဖို့ အသုံးပြုတဲ့ data တွေကို ဝင်ရောက်ကြည့်ရှုလို့ မရတဲ့အတွက် ဖြေရှင်းလို့ မရသေးပါဘူး။

သင့်မှာ self-contained ဖြစ်တဲ့အရာတစ်ခု ရရှိပြီဆိုတာနဲ့၊ အဲဒါကို code လိုင်းနည်းနည်းလေးနဲ့ ထပ်လျှော့ချကြည့်နိုင်ပါတယ်။ ဒါကို minimal reproducible example လို့ ကျွန်တော်တို့ ခေါ်ပါတယ်။ ဒါက သင့်ဘက်ကနေ အလုပ်ပိုလုပ်ရပေမယ့်၊ ကောင်းမွန်ပြီး တိုတောင်းတဲ့ bug reproducer တစ်ခုကို သင်ပံ့ပိုးပေးနိုင်ရင် အကူအညီနဲ့ fix တစ်ခု ရဖို့ အာမခံနိုင်ပါလိမ့်မယ်။

သင်အဆင်ပြေတယ်လို့ ခံစားရရင်၊ သင့် bug ဖြစ်ပျက်တဲ့ source code ကို ဝင်ရောက်စစ်ဆေးကြည့်ပါ။ သင့်ပြဿနာအတွက် ဖြေရှင်းနည်းတစ်ခုကို သင်တွေ့နိုင်ပါတယ် (ဒီလိုဆိုရင် fix လုပ်ဖို့ pull request တောင် အကြံပြုနိုင်ပါတယ်)၊ ဒါပေမယ့် ပိုပြီး ယေဘုယျအားဖြင့်၊ ဒါက maintainers တွေကို သင့် report ကို ဖတ်တဲ့အခါ source ကို ပိုကောင်းကောင်း နားလည်အောင် ကူညီပေးနိုင်ပါတယ်။

Issue Template ကို ဖြည့်သွင်းခြင်း

သင် issue တစ်ခု file လုပ်တဲ့အခါ ဖြည့်သွင်းရမယ့် template တစ်ခုရှိတာကို သတိထားမိပါလိမ့်မယ်။ ဒီနေရာမှာ 🤗 Transformers issues အတွက် template ကို ကျွန်တော်တို့ လိုက်နာပါမယ်၊ ဒါပေမယ့် အခြား repository တစ်ခုမှာ issue တစ်ခု report လုပ်ရင်လည်း အလားတူအချက်အလက်တွေ လိုအပ်ပါလိမ့်မယ်။ template ကို ဗလာမထားပါနဲ့- ဒါကို ဖြည့်သွင်းဖို့ အချိန်ယူခြင်းက သင့်အဖြေရရှိနိုင်ခြေနဲ့ ပြဿနာကို ဖြေရှင်းနိုင်ခြေကို အမြင့်ဆုံး ဖြစ်စေပါလိမ့်မယ်။

ယေဘုယျအားဖြင့်၊ issue တစ်ခု file လုပ်တဲ့အခါ၊ အမြဲတမ်း ယဉ်ကျေးစွာ နေပါ။ ဒါဟာ open source project တစ်ခုဖြစ်လို့ သင်ဟာ အခမဲ့ software ကို အသုံးပြုနေတာဖြစ်ပြီး၊ ဘယ်သူမှ သင့်ကို ကူညီဖို့ တာဝန်မရှိပါဘူး။ သင်မှန်ကန်တယ်လို့ ထင်တဲ့ ဝေဖန်ချက်တွေကို သင့် issue ထဲမှာ ထည့်သွင်းနိုင်ပေမယ့်၊ maintainers တွေက ဒါကို ကောင်းကောင်းမခံယူဘဲ သင့်ကို ကူညီဖို့ အလျင်စလို မလုပ်ချင်တော့တာမျိုး ဖြစ်နိုင်ပါတယ်။ project ရဲ့ code of conduct ကို သေချာဖတ်ပါ။

သင့် Environment အချက်အလက်များ ထည့်သွင်းခြင်း

🤗 Transformers က သင့် environment အကြောင်း ကျွန်တော်တို့ လိုအပ်တဲ့ အချက်အလက်အားလုံးကို ရယူဖို့ utility တစ်ခု ပံ့ပိုးပေးပါတယ်။ သင့် terminal မှာ အောက်ပါအတိုင်း ရိုက်ထည့်လိုက်ရုံပါပဲ။

transformers-cli env

ပြီးရင် ဒီလိုမျိုး တစ်ခုခုကို သင်ရရှိပါလိမ့်မယ်။

Copy-and-paste the text below in your GitHub issue and FILL OUT the two last points.

- `transformers` version: 4.12.0.dev0
- Platform: Linux-5.10.61-1-MANJARO-x86_64-with-arch-Manjaro-Linux
- Python version: 3.7.9
- PyTorch version (GPU?): 1.8.1+cu111 (True)
- Tensorflow version (GPU?): 2.5.0 (True)
- Flax version (CPU?/GPU?/TPU?): 0.3.4 (cpu)
- Jax version: 0.2.13
- JaxLib version: 0.1.65
- Using GPU in script?: <fill in>
- Using distributed or parallel set-up in script?: <fill in>

transformers-cli env command ရဲ့ အရှေ့မှာ ! တစ်ခု ထည့်ခြင်းဖြင့် notebook cell ကနေ execute လုပ်နိုင်ပြီး၊ ပြီးရင် ရလဒ်ကို သင့် issue ရဲ့ အစမှာ copy & paste လုပ်နိုင်ပါတယ်။

လူများကို Tag လုပ်ခြင်း

@ လို့ရိုက်ပြီး ၎င်းတို့ရဲ့ GitHub handle ကို လိုက်ရိုက်ခြင်းက ၎င်းတို့ကို notification ပို့ပေးမှာဖြစ်လို့ သူတို့က သင့် issue ကို တွေ့ရမှာဖြစ်ပြီး ပိုမြန်မြန် ပြန်ကြားနိုင်ပါတယ်။ ဒါကို ချင့်ချိန်ပြီး အသုံးပြုပါ။ ဘာလို့လဲဆိုတော့ သင် tag လုပ်တဲ့သူတွေဟာ သူတို့နဲ့ တိုက်ရိုက်မသက်ဆိုင်တဲ့ ကိစ္စတစ်ခုအတွက် notify လုပ်ခံရတာကို မကြိုက်နိုင်လို့ပါပဲ။ သင့် bug နဲ့ ဆက်စပ်နေတဲ့ source files တွေကို သင်ကြည့်ရှုခဲ့တယ်ဆိုရင်၊ သင့်ပြဿနာအတွက် တာဝန်ရှိတယ်လို့ သင်ထင်တဲ့ လိုင်းမှာ နောက်ဆုံးပြောင်းလဲမှု လုပ်ခဲ့တဲ့သူကို tag လုပ်သင့်ပါတယ် (ဒီအချက်အလက်ကို GitHub ပေါ်က အဲဒီလိုင်းကို ကြည့်ပြီး၊ ရွေးချယ်ပြီး၊ “View git blame” ကို နှိပ်ခြင်းဖြင့် ရှာနိုင်ပါတယ်)။

မဟုတ်ရင်၊ template က tag လုပ်ဖို့ လူတွေကို အကြံပြုချက်တွေ ပေးပါတယ်။ ယေဘုယျအားဖြင့်၊ လူသုံးယောက်ထက် ပိုမ tag ပါနဲ့။

Reproducible Example ထည့်သွင်းခြင်း

bug ကို ထုတ်လုပ်တဲ့ self-contained example တစ်ခုကို သင်ဖန်တီးနိုင်ခဲ့ပြီဆိုရင်၊ အခု ဒါကို ထည့်သွင်းရမယ့်အချိန်ပါပဲ! ဒီလိုမျိုး သုံးချောင်းထောင် backticks တွေနဲ့ python ကို လိုက်ရိုက်ပြီး လိုင်းတစ်ခုကို ရိုက်ထည့်ပါ။

```python

ပြီးရင် သင့် minimal reproducible example ကို paste လုပ်ပြီး သုံးချောင်းထောင် backticks တွေနဲ့ လိုင်းအသစ်တစ်ခု ရိုက်ထည့်ပါ။ ဒါက သင့် code ကို မှန်ကန်စွာ format လုပ်ထားတာကို သေချာစေပါလိမ့်မယ်။

reproducible example တစ်ခု ဖန်တီးနိုင်ခြင်းမရှိခဲ့ရင်၊ သင့် issue ကို ဘယ်လိုရရှိခဲ့သလဲဆိုတာကို ရှင်းလင်းတဲ့ အဆင့်တွေနဲ့ ရှင်းပြပါ။ သင် error ရရှိခဲ့တဲ့ Google Colab notebook ရဲ့ link တစ်ခုကိုလည်း ထည့်သွင်းနိုင်ရင် ထည့်သွင်းပေးပါ။ သင်မျှဝေတဲ့ အချက်အလက်များလေ၊ maintainers တွေက သင့်ကို ပိုကောင်းကောင်း ပြန်ကြားနိုင်လေပါပဲ။

အခြေအနေအားလုံးမှာ၊ သင်ရရှိနေတဲ့ error message တစ်ခုလုံးကို copy & paste လုပ်သင့်ပါတယ်။ သင် Colab မှာ အလုပ်လုပ်နေတယ်ဆိုရင်၊ stack trace မှာ frames အချို့က အလိုအလျောက် collapsed ဖြစ်နေနိုင်တာကို သတိရပါ၊ ဒါကြောင့် copy မလုပ်ခင် ၎င်းတို့ကို expand လုပ်ထားဖို့ သေချာပါစေ။ code sample နဲ့အတူတူပါပဲ၊ အဲဒီ error message ကို သုံးချောင်းထောင် backticks နှစ်ခုကြားမှာ ထားပါ။ ဒါမှ မှန်ကန်စွာ format လုပ်ထားမှာပါ။

မျှော်လင့်ထားသော လုပ်ဆောင်ချက်ကို ဖော်ပြခြင်း

သင်ဘာကို မျှော်လင့်ခဲ့သလဲဆိုတာကို စာကြောင်းအနည်းငယ်နဲ့ ရှင်းပြပါ။ ဒါမှ maintainers တွေက ပြဿနာကို အပြည့်အဝ နားလည်နိုင်မှာပါ။ ဒီအပိုင်းက ပုံမှန်အားဖြင့် အတော်လေး ရှင်းလင်းတာကြောင့် စာကြောင်းတစ်ကြောင်းနဲ့ အဆင်ပြေနိုင်ပေမယ့်၊ တချို့ကိစ္စတွေမှာ ပြောစရာတွေ အများကြီး ရှိနိုင်ပါတယ်။

ပြီးရင် ဘာဆက်လုပ်ရမလဲ။

သင့် issue ကို file လုပ်ပြီးတာနဲ့၊ အားလုံးအဆင်ပြေရဲ့လားဆိုတာကို မြန်မြန်ဆန်ဆန် စစ်ဆေးကြည့်ပါ။ အမှားလုပ်မိခဲ့ရင် issue ကို edit လုပ်နိုင်ပါတယ်၊ ဒါမှမဟုတ် ပြဿနာက အစက သင်ထင်ခဲ့တာနဲ့ ကွဲပြားနေတယ်ဆိုတာ သိလာရင် ခေါင်းစဉ်ကိုတောင် ပြောင်းနိုင်ပါတယ်။

အဖြေမရရင် လူတွေကို ping လုပ်နေဖို့ အဓိပ္ပာယ်မရှိပါဘူး။ ရက်အနည်းငယ်ကြာတဲ့အထိ ဘယ်သူမှ မကူညီဘူးဆိုရင်၊ ဘယ်သူမှ သင့်ပြဿနာကို နားမလည်တာ ဖြစ်နိုင်ပါတယ်။ reproducible example ကို ပြန်သွားဖို့ မတွန့်ဆုတ်ပါနဲ့။ ဒါကို ပိုတိုတောင်းပြီး ပိုပြီးတိကျအောင် လုပ်နိုင်မလား။ တစ်ပတ်အတွင်း အဖြေမရရင်၊ အထူးသဖြင့် ပြဿနာနဲ့ ပတ်သက်တဲ့ အချက်အလက်တွေ ပိုမိုထည့်သွင်းဖို့ သင့် issue ကို edit လုပ်ထားခဲ့တယ်ဆိုရင်၊ အကူအညီ တောင်းခံတဲ့ မက်ဆေ့ချ်တစ်ခုကို ယဉ်ကျေးစွာ ချန်ထားခဲ့နိုင်ပါတယ်။

ဝေါဟာရ ရှင်းလင်းချက် (Glossary)

  • Hugging Face Libraries: Hugging Face မှ ထုတ်လုပ်ထားသော ဆော့ဖ်ဝဲလ် library များ (ဥပမာ- 🤗 Transformers, 🤗 Datasets, 🤗 Tokenizers, 🤗 Accelerate)။
  • Open Source Library: ၎င်း၏ source code ကို အများပြည်သူအား လွတ်လပ်စွာ အသုံးပြု၊ ပြင်ဆင်၊ ဖြန့်ဝေခွင့်ပြုထားသော library။
  • Bug: ဆော့ဖ်ဝဲလ်တစ်ခု၏ code ထဲတွင်ရှိသော အမှားတစ်ခုကြောင့် ပရိုဂရမ်သည် မျှော်လင့်ထားသည့်အတိုင်း အလုပ်မလုပ်ခြင်း။
  • Forums (Hugging Face Forums): Hugging Face အသုံးပြုသူများ အချင်းချင်း မေးခွန်းများမေးရန်၊ အဖြေများပေးရန်နှင့် ဆွေးနွေးရန်အတွက် အွန်လိုင်းဖိုရမ်။
  • Community: Hugging Face တွင် AI/ML နယ်ပယ်မှ သုံးစွဲသူများ၊ developer များ နှင့် သုတေသီများ စုစည်းထားသော အဖွဲ့အစည်း။
  • Hugging Face Team: Hugging Face ကုမ္ပဏီမှ အဖွဲ့သားများ။
  • Minimal Reproducible Example: bug တစ်ခုကို ပြန်လည်ထုတ်လုပ်နိုင်ရန် လိုအပ်သော code အနည်းဆုံး အပိုင်းအစ။ ၎င်းသည် ပြဿနာကို လျင်မြန်စွာ ဖော်ထုတ်ပြီး ဖြေရှင်းနိုင်ရန် ကူညီပေးသည်။
  • Reproducible: သတ်မှတ်ထားသော code နှင့် data ကို အသုံးပြု၍ တူညီသော ရလဒ်များကို ပြန်လည်ထုတ်လုပ်နိုင်ခြင်း။
  • External Files/Data: project အတွင်း၌ ပါဝင်ခြင်းမရှိသော ပြင်ပမှ ဖိုင်များ သို့မဟုတ် ဒေတာများ။
  • Dummy Values: စမ်းသပ်ခြင်း သို့မဟုတ် ဥပမာပြခြင်းအတွက် အသုံးပြုသော အစစ်အမှန်မဟုတ်သည့် တန်ဖိုးများ။
  • 🤗 Transformers Repository: Hugging Face Transformers library ၏ code များနှင့် files များကို သိမ်းဆည်းထားသော GitHub repository။
  • Self-contained: ပြင်ပအရာများပေါ်တွင် မှီခိုခြင်းမရှိဘဲ မိမိဘာသာ အလုပ်လုပ်နိုင်သော အရာ။
  • Bug Reproducer: bug ကို ပြန်လည်ထုတ်လုပ်ပေးနိုင်သော code အပိုင်းအစ။
  • Source Code: ပရိုဂရမ်တစ်ခုကို ရေးသားထားသော လူသားများ ဖတ်ရှုနားလည်နိုင်သည့် code။
  • Pull Request: open source project တစ်ခုတွင် code ပြောင်းလဲမှုများကို ပရောဂျက်၏ main codebase ထဲသို့ ထည့်သွင်းရန် အကြံပြုခြင်း။
  • Maintainers: open source project တစ်ခုကို စီမံခန့်ခွဲပြီး ထိန်းသိမ်းပေးသူများ။
  • Issue Template: GitHub Issues ကဲ့သို့သော platform များတွင် issue တစ်ခု file လုပ်သောအခါ ဖြည့်သွင်းရမည့် အချက်အလက်များအတွက် ပုံစံ။
  • Repository: Git version control system ကို အသုံးပြု၍ project files တွေကို ခြေရာခံ၊ စီမံခန့်ခွဲရာတွင် အသုံးပြုသည်။
  • Open Source Project: ၎င်းတို့၏ source code ကို အများပြည်သူအား လွတ်လပ်စွာ အသုံးပြု၊ ပြင်ဆင်၊ ဖြန့်ဝေခွင့်ပြုထားသော ဆော့ဖ်ဝဲလ် project များ။
  • Code of Conduct: project ၏ အသိုင်းအဝိုင်းအတွင်းရှိ လူများ လိုက်နာရမည့် ကျင့်ဝတ်စည်းကမ်းများ။
  • transformers-cli env: Hugging Face Transformers CLI (Command Line Interface) မှ environment အချက်အလက်များကို ထုတ်ပေးသော command။
  • ! (Exclamation Mark): Jupyter/Colab Notebooks များတွင် shell commands များကို run ရန်အတွက် အသုံးပြုသော prefix။
  • Notebook Cell: Jupyter Notebook ၏ အစိတ်အပိုင်းတစ်ခုဖြစ်ပြီး code, text သို့မဟုတ် output များကို ထည့်သွင်းနိုင်သည်။
  • GitHub Handle: GitHub ပေါ်ရှိ အသုံးပြုသူ၏ username။
  • Notification: အသုံးပြုသူတစ်ဦးကို အဖြစ်အပျက်တစ်ခုအကြောင်း အသိပေးခြင်း။
  • Source Files: project ၏ source code ပါဝင်သော ဖိုင်များ။
  • git blame: Git command တစ်ခုဖြစ်ပြီး ဖိုင်တစ်ဖိုင်ရှိ လိုင်းတစ်ခုစီကို နောက်ဆုံးပြောင်းလဲခဲ့သောသူနှင့် အချိန်ကို ပြသသည်။
  • Backticks (```): Markdown တွင် code block များကို ဖော်ပြရန် အသုံးပြုသော အမှတ်အသား။
  • Google Colab Notebook: Google မှ ပံ့ပိုးပေးထားသော cloud-based Jupyter Notebook environment တစ်ခုဖြစ်ပြီး Python code များကို web browser မှတစ်ဆင့် run နိုင်စေသည်။
  • Error Message: ပရိုဂရမ်တစ်ခုတွင် အမှားတစ်ခုဖြစ်ပွားသောအခါ စနစ်မှ ပြသသော သတင်းစကား။
  • Stack Trace: ပရိုဂရမ်တစ်ခုတွင် error ဖြစ်ပွားသောအခါ function ခေါ်ဆိုမှုများ၏ စာရင်းကို ပြသသော မှတ်တမ်း။
  • Collapsed Frames: Stack trace တွင် အလိုအလျောက် ဝှက်ထားသော အသေးစိတ်အချက်အလက်များ။
  • Expected Behavior: ပရိုဂရမ်သည် သတ်မှတ်ထားသော input ဖြင့် မည်သို့ လုပ်ဆောင်မည်ဟု မျှော်လင့်ထားသော လုပ်ဆောင်ချက်။
  • Ping: လူတစ်ဦး သို့မဟုတ် အဖွဲ့တစ်ဖွဲ့ကို အကြောင်းကြားချက် ပို့ခြင်း သို့မဟုတ် အာရုံစိုက်မိစေရန် လုပ်ဆောင်ခြင်း။
Update on GitHub