salma-remyx commited on
Commit
8739009
Β·
verified Β·
1 Parent(s): cdaf90c

Mark Space offline pending architecture reassessment

Browse files
Files changed (1) hide show
  1. README.md +10 -88
README.md CHANGED
@@ -1,104 +1,26 @@
1
  ---
2
- title: Feature Finder
3
  emoji: πŸ”
4
- colorFrom: blue
5
- colorTo: indigo
6
  sdk: gradio
7
  sdk_version: "5.50.0"
8
  app_file: app.py
9
  pinned: false
10
  license: apache-2.0
11
- hardware: h200
12
  hf_oauth: false
13
  ---
14
 
15
  # Feature Finder
16
 
17
- Given a GitHub repo, surfaces a relevant recent arXiv paper for the team's next feature β€” paired with a PR-ready spec (summary, motivation, implementation plan, open questions) that a coding agent can pick up and run with.
18
 
19
- For recommendations tailored to your team's development practices, [sign up at engine.remyx.ai](https://engine.remyx.ai).
20
-
21
- ## About the model
22
-
23
- The scoring model is a **LoRA adapter on Qwen3.5-2B**, distilled from a Pairwise Gaussian Process teacher trained on team-preference signals derived from GitHub merge histories.
24
-
25
- - **Base**: [Qwen/Qwen3.5-2B](https://huggingface.co/Qwen/Qwen3.5-2B)
26
- - **Adapter**: [`remyxai/mhpd-dpo-qwen3.5-2b-lora-v1.2-ipo-2epoch`](https://huggingface.co/remyxai/mhpd-dpo-qwen3.5-2b-lora-v1.2-ipo-2epoch) (current production; v1.5 in development)
27
- - **Training objective**: IPO loss (Ξ²=0.1), bounded target gap that's more robust to noisy confident pairs than sigmoid DPO
28
- - **Training data**: 50K preference pairs (`chosen` / `rejected`) generated from real GitHub repo merge histories
29
- - **Eval**: candidate-disjoint repo-disjoint holdout β€” no paper appears in both train and eval β€” so accuracy reflects cross-repo generalization, not memorization
30
-
31
- ### Why a fine-tune vs zero-shot LLM?
32
-
33
- A zero-shot LLM ranking arXiv papers against a team description gives generic "this paper looks topically relevant" answers. Our fine-tune learns the **preference signal** of which papers a team-aware reasoner (the GP teacher) actually flags as worth reading next. That extracts directional signal the LLM doesn't have access to.
34
-
35
- The whole pipeline (GP teacher β†’ preference pairs β†’ LoRA distillation) is described in our training repository: [github.com/remyxai/mhpd-dpo-training](https://github.com/remyxai/mhpd-dpo-training).
36
-
37
- ### Personalized version
38
-
39
- The open-source generalist you're using is trained on cross-repo preference signal. For per-team **specialist** models β€” tailored to your team's development practices via continued fine-tuning on your private preference data β€” sign up at [engine.remyx.ai](https://engine.remyx.ai). Specialists typically lift confidence by 10-15pts on team-specific picks vs the generalist.
40
-
41
- ## How it works
42
-
43
- ```
44
- GitHub URL
45
- ↓
46
- Fetch recent commits (GitHub Public API)
47
- ↓
48
- Gemini Flash: filter noise + summarize commits into "experiment history" + "domain summary"
49
- ↓
50
- sentence-transformers (all-MiniLM-L6-v2): embed domain summary, retrieve top-50 arXiv candidates
51
- ↓
52
- v1.2 LoRA on Qwen3.5-2B: score logprob(paper | team_context) per candidate
53
- ↓
54
- Confidence tier (z-score above pool median + embedding-cosine OOD floor)
55
- ↓
56
- Base Qwen3.5-2B: draft a PR body integrating the paper
57
- ```
58
-
59
- The arXiv candidate pool ([`remyxai/arxiv_pool_daily`](https://huggingface.co/datasets/remyxai/arxiv_pool_daily)) is precomputed daily β€” abstracts pre-embedded so per-request retrieval is sub-second CPU work. Categories covered: `cs.AI`, `cs.LG`, `cs.CL`, `cs.CV`, `cs.DB`, `cs.IR`, `cs.SE`, `stat.ML`.
60
-
61
- ## Calibration-aware confidence
62
-
63
- The recommendation is tiered by **two** signals β€” z-score above the candidate-pool median AND embedding similarity to the team's domain summary. Both gates must clear for a tier:
64
-
65
- | Tier | z-score | embedding cosine | Estimated accuracy |
66
- |---|---|---|---|
67
- | 🟒 **High** | β‰₯ 2.0Οƒ | β‰₯ 0.60 | ~73% |
68
- | 🟑 **Moderate** | β‰₯ 1.5Οƒ | β‰₯ 0.50 | ~65% |
69
- | 🟠 **Low** | β‰₯ 1.0Οƒ | β‰₯ 0.40 | ~55% |
70
- | πŸ”΄ **Near-random** | otherwise | β€” | ~50% |
71
-
72
- The two-signal design handles out-of-distribution repos honestly: a recommendation may be the clear winner *within* its candidate pool (high z-score) while the pool itself doesn't actually contain topical matches for the team's domain (low cosine). The OOD case correctly demotes to Low/Near-random and surfaces the upsell.
73
-
74
- ## Development
75
-
76
- ### Environment variables
77
-
78
- | Variable | Purpose | Required |
79
- |---|---|---|
80
- | `HF_TOKEN` | Read access to the LoRA adapter + arxiv pool dataset | yes |
81
- | `GEMINI_API_KEY` | Team-context summarization (Gemini Flash). Also used for PR-body generation when `MHPD_GENERATION_BACKEND=gemini` | yes |
82
- | `MHPD_ADAPTER` | Override the LoRA adapter repo. Default: `remyxai/mhpd-dpo-qwen3.5-2b-lora-v1.2-ipo-2epoch` (v1.2). Will swap to v1.5 once trained. | no |
83
- | `MHPD_GENERATION_BACKEND` | `local` (default) uses the base 2B on GPU for PR body draft. `gemini` routes PR body to Gemini Flash on CPU, freeing GPU time for the scoring step. | no |
84
- | `USE_SPACES_GPU` | `true` (default) enables the `@spaces.GPU` decorator for Zero-GPU Spaces. Set `false` on persistent paid GPU Spaces. | no |
85
- | `ARXIV_POOL_REPO` / `ARXIV_POOL_FILE` | HF dataset hosting the precomputed pool. Default: `remyxai/arxiv_pool_daily` | no |
86
-
87
- ### Local development
88
-
89
- ```bash
90
- pip install -r requirements.txt
91
- export HF_TOKEN=hf_...
92
- export GEMINI_API_KEY=...
93
- python app.py
94
- ```
95
-
96
- ### Architecture invariants
97
-
98
- - **GPU only for scoring + PR body generation**. Embedding pre-filter, GitHub fetching, and Gemini call run on CPU before any GPU work is invoked.
99
- - **arxiv_pool.parquet is precomputed** (daily cron via [GitHub Actions](https://github.com/remyxai/mhpd-dpo-training/blob/main/.github/workflows/refresh-arxiv-pool.yml)) β€” abstracts already embedded with all-MiniLM-L6-v2 to avoid embedding 500+ papers per cold start.
100
- - **Single base model on GPU, LoRA toggled** via `enable_adapters()` / `disable_adapters()` for the scoring vs generation pass.
101
 
102
  ## License
103
 
104
- Apache 2.0 for the Space code. The fine-tuned LoRA adapter is licensed per its model card on HF Hub. Underlying base model (Qwen3.5-2B) has its own license; arxiv abstracts are subject to arxiv terms.
 
1
  ---
2
+ title: Feature Finder (offline)
3
  emoji: πŸ”
4
+ colorFrom: gray
5
+ colorTo: gray
6
  sdk: gradio
7
  sdk_version: "5.50.0"
8
  app_file: app.py
9
  pinned: false
10
  license: apache-2.0
11
+ hardware: cpu-basic
12
  hf_oauth: false
13
  ---
14
 
15
  # Feature Finder
16
 
17
+ This Space is **offline** while we reassess the recommender architecture.
18
 
19
+ Based on our internal eval audit, ranking is better served by a frontier
20
+ LLM that's given the team's GitHub commit history directly as context than
21
+ by the small specialist model this Space served. We may return with a
22
+ redesigned version. In the meantime, the Space is paused.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23
 
24
  ## License
25
 
26
+ Apache 2.0 for the Space code.