প্রকল্প সম্পর্কে

# Build-Eye CI পর্যবেক্ষণ সিস্টেম **বিল্ড ঈগল আই** - vLLM-Ascend CI বিল্ড স্বয়ংক্রিয় পর্যবেক্ষণ ও মূল কারণ বিশ্লেষণ সিস্টেম ## সিস্টেম পরিচিতি Build-Eye হলো vLLM-Ascend প্রকল্পের জন্য বিশেষভাবে ডিজাইন করা একটি CI বিল্ড পর্যবেক্ষণ সিস্টেম, যা সক্ষম: - vllm-project/vllm-ascend রিপোজিটরির CI বিল্ড **স্বয়ংক্রিয়ভাবে পর্যবেক্ষণ** করা - বিল্ড ব্যর্থতার মূল কারণ **বুদ্ধিমত্তার সাথে শ্রেণীবদ্ধ** করা (কোড সমস্যা/অবকাঠামো সমস্যা/হস্তক্ষেপ সমস্যা) - কম খরচে বাস্তবায়নযোগ্য সমাধান **পরামর্শ তৈরি** করা - মানসম্মত রিপোর্ট স্বয়ংক্রিয়ভাবে build-eye রিপোজিটরিতে **সংরক্ষণ** করা ## পর্যবেক্ষণের লক্ষ্য - প্রধান পর্যবেক্ষণ রিপোজিটরি: https://github.com/vllm-project/vllm-ascend - সংরক্ষণ হোস্টিং রিপোজিটরি: https://github.com/winson-00178005/build-eye.git ## ব্যর্থতার মূল কারণ শ্রেণীবিভাগ ### ১. PR কোড সমস্যা - টেস্ট অ্যাসারশন ব্যর্থতা - কম্পাইল ত্রুটি (CMake, clang) - Python ইমপোর্ট ত্রুটি - vLLM API অসামঞ্জস্য - Ascend kernel কম্পাইল সমস্যা ### ২. অবকাঠামো সমস্যা - K8s cache-service ব্যর্থতা (cache-service.nginx-pypi-cache) - Runner অনুপলব্ধ - NPU হার্ডওয়্যার সমস্যা (910B/910C/310P) - CANN toolkit সমস্যা - HCCL মাল্টি-কার্ড যোগাযোগ ব্যর্থতা - Docker ইমেজ pull ব্যর্থতা - Csrc ক্যাশে ব্যর্থতা - বিল্ড টাইমআউট ### ৩. একাধিক PR সমকালীন হস্তক্ষেপ - অল্প সময়ের মধ্যে একাধিক PR মার্জ - vLLM সংস্করণ ম্যাট্রিক্স পার্থক্য - Runner রিসোর্স প্রতিযোগিতা - CANN ইমেজ আপডেটের প্রভাব ## দ্রুত শুরু ### ১. GitHub Token কনফিগার করুন প্রয়োজনীয় কী কনফিগার করতে `docs/token-setup.md` দেখুন। ### ২. নির্ভরতা ইনস্টল করুন ```bash pip install -r requirements.txt ``` ### ৩. ম্যানুয়ালি পর্যবেক্ষণ ট্রিগার করুন ```bash python scripts/monitor/fetch_runs.py --output data/workflow_runs.json python scripts/monitor/collect_metadata.py --input data/workflow_runs.json --output data/build_metadata.json python scripts/classify/classifier.py --input data/build_metadata.json --output data/classifications.json python scripts/recommend/recommender.py --input data/classifications.json --output data/recommendations.json python scripts/report/generator.py --input data/recommendations.json --output reports/ ``` ### ৪. রিপোর্ট সংরক্ষণ করুন ```bash python scripts/archive/archiver.py --input reports/ --repo https://github.com/winson-00178005/build-eye.git ``` ## GitHub Actions ওয়ার্কফ্লো সিস্টেম দুটি ট্রিগার মোড সমর্থন করে: ### নির্ধারিত পোলিং প্রতি ৬ ঘণ্টায় স্বয়ংক্রিয়ভাবে সাম্প্রতিক বিল্ড ব্যর্থতা পরীক্ষা করে। ওয়ার্কফ্লো ফাইল: `.github/workflows/monitor.yml` ### ম্যানুয়াল ট্রিগার GitHub Actions-এর `workflow_dispatch` এর মাধ্যমে ম্যানুয়ালি ট্রিগার করুন। ঐচ্ছিক প্যারামিটার: - `lookback_hours`: কত ঘণ্টা পিছনে পরীক্ষা করবে (ডিফল্ট ২৪) - `dry_run`: ট্রায়াল রান মোড (সংরক্ষণ করবে না) - `target_repo`: লক্ষ্য রিপোজিটরি ## প্রকল্প কাঠামো ``` build-eye/ ├── .github/workflows/ │ └── monitor.yml # GitHub Actions ওয়ার্কফ্লো ├── scripts/ │ ├── monitor/ # CI পর্যবেক্ষণ মডিউল │ │ ├── github_client.py # GitHub API ক্লায়েন্ট │ │ ├── fetch_runs.py # workflow runs সংগ্রহ │ │ ├── collect_metadata.py # মেটাডেটা সংগ্রহ │ │ └── config_loader.py # কনফিগারেশন লোড │ ├── classify/ # ব্যর্থতা শ্রেণীবিভাগ মডিউল │ │ ├── classifier.py # শ্রেণীবিভাগ ইঞ্জিন │ │ ├── code_detector.py # কোড সমস্যা সনাক্তকরণ │ │ ├── infra_detector.py # অবকাঠামো সনাক্তকরণ │ │ └── interference_detector.py # হস্তক্ষেপ সনাক্তকরণ │ ├── recommend/ # সমাধান পরামর্শ মডিউল │ │ ├── recommender.py # পরামর্শ জেনারেটর │ │ └── templates.py # পরামর্শ টেমপ্লেট │ ├── report/ # রিপোর্ট জেনারেশন মডিউল │ │ ├── generator.py # রিপোর্ট জেনারেটর │ │ ├── formatter.py # ফরম্যাটিং টুল │ │ └── summary.py # সারসংক্ষেপ জেনারেশন │ └── archive/ # রিপোর্ট সংরক্ষণ মডিউল │ ├── archiver.py # আর্কাইভার │ └── git_client.py # Git ক্লায়েন্ট ├── config/ │ └── config.yaml # সিস্টেম কনফিগারেশন ├── templates/ │ └ example_reports.py # রিপোর্ট উদাহরণ ├── tests/ # টেস্ট ডিরেক্টরি ├── docs/ │ └ token-setup.md # Token কনফিগারেশন গাইড ├── reports/ # রিপোর্ট আউটপুট ডিরেক্টরি └ requirements.txt # Python নির্ভরতা └ requirements-dev.txt # ডেভেলপমেন্ট নির্ভরতা └ README.md # এই ডকুমেন্ট ``` ## কনফিগারেশন অপশন ### config/config.yaml ```yaml target_repository: owner: vllm-project repo: vllm-ascend url: https://github.com/vllm-project/vllm-ascend branch: main monitored_workflows: - pr_test_full.yaml - pr_test_light.yaml archive_repository: owner: winson-00178005 repo: build-eye url: https://github.com/winson-00178005/build-eye.git monitoring: polling_interval_hours: 6 lookback_hours: 24 ``` ### এনভায়রনমেন্ট ভেরিয়েবল - `GITHUB_TOKEN`: GitHub API অ্যাক্সেস token - `ARCHIVE_TOKEN`: সংরক্ষণ রিপোজিটরি রাইট token - `TARGET_REPO_OWNER`: লক্ষ্য রিপোজিটরি owner - `TARGET_REPO_NAME`: লক্ষ্য রিপোজিটরি নাম ## রিপোর্ট ফরম্যাট প্রতিটি রিপোর্টে রয়েছে: - YAML frontmatter (মেটাডেটা) - সারসংক্ষেপ (১-২ বাক্য) - মূল কারণ বিশ্লেষণ (শ্রেণীবিভাগ, আত্মবিশ্বাস, যুক্তি) - প্রমাণ (ম্যাচিং প্যাটার্ন, লিংক, লগ স্নিপেট) - সমাধান পরামর্শ (অগ্রাধিকার পরামর্শ, বিস্তারিত ধাপ) - সম্পর্কিত PR (শুধুমাত্র হস্তক্ষেপ শ্রেণীবিভাগ) রিপোর্ট সংরক্ষণ পাথ: `reports/YYYY/MM/DD/<শ্রেণীবিভাগ>-pr-<নম্বর>.md` ## টেস্ট চালান ```bash pip install -r requirements-dev.txt pytest tests/ ``` ## nightly পাইপলাইন সম্প্রসারণ সিস্টেম ইতিমধ্যে nightly পাইপলাইন পর্যবেক্ষণ সমর্থন করার জন্য ডিজাইন করা হয়েছে, শুধু কনফিগারেশনে যোগ করুন: ```yaml target_repository: monitored_workflows: - schedule_nightly_test_a2.yaml - schedule_nightly_test_a3.yaml ``` ## রক্ষণাবেক্ষণ ও সম্প্রসারণ ### নতুন শ্রেণীবিভাগ নিয়ম যোগ করা `scripts/classify/` এ নতুন ডিটেক্টর যোগ করুন: ```python def detect_new_pattern(log_excerpt: str) -> dict: patterns = [...] # সনাক্তকরণ লজিক বাস্তবায়ন করুন ``` তারপর `classifier.py` এ কল করুন। ### নতুন পরামর্শ টেমপ্লেট যোগ করা `scripts/recommend/templates.py` এ নতুন টেমপ্লেট যোগ করুন। ## লাইসেন্স Apache License 2.0 - বিস্তারিত LICENSE ফাইলে দেখুন ## যোগাযোগ সমস্যা প্রতিক্রিয়া: https://github.com/winson-00178005/build-eye/issues