|
Download usage.md from WhaletechAI/W1-JEV: direct link, hf CLI and curl.
- Browser
- Download file 2.65 kB
-
https://huggingface.co/WhaletechAI/W1-JEV/resolve/main/usage.md
- Command line
-
hf download hf://WhaletechAI/W1-JEV/usage.md
-
curl -L -o usage.md https://huggingface.co/WhaletechAI/W1-JEV/resolve/main/usage.md
2.65 kB
| # W1-JEV usage | |
| Requires Linux, Python 3.12, and a CUDA GPU with BF16 support and a driver | |
| compatible with CUDA 12.8. Runtime versions: PyTorch 2.10.0, Transformers 4.57.6, | |
| and Tokenizers 0.22.2. The included FP32 checkpoint is approximately 14.96 GB; | |
| the runtime uses BF16 for inference. | |
| ## Download and start | |
| ```bash | |
| mkdir -p W1-JEV | |
| cd W1-JEV | |
| python3.12 -m venv .venv | |
| source .venv/bin/activate | |
| python -m pip install huggingface_hub==0.36.2 | |
| ``` | |
| If the repository is private, run `hf auth login` with an account that has | |
| access before downloading. Public, ungated downloads do not require login. | |
| Download the complete repository, including the checkpoint, then start the | |
| local service: | |
| ```bash | |
| hf download WhaletechAI/W1-JEV --local-dir . | |
| python -m pip install torch==2.10.0 --index-url https://download.pytorch.org/whl/cu128 | |
| python -m pip install -r requirements.txt | |
| python structured_server.py --checkpoint w1-jev.pt | |
| ``` | |
| Wait until the server prints `w1-jev ready at http://127.0.0.1:8011`. | |
| Keep it running, then open a second terminal in the downloaded `W1-JEV` | |
| directory and run: | |
| ```bash | |
| source .venv/bin/activate | |
| curl --fail http://127.0.0.1:8011/health | |
| python examples/ask.py | |
| ``` | |
| The health check returns `{"status": "ready", "model": "w1-jev"}`. The example | |
| client prints a JSON result containing `answers.answer`. | |
| ## Ask a question | |
| Replace the question and options below. The server applies the [djev template](https://github.com/mmastrac/djev), labels the options `A, B, C, D, ...` in order, and reads the answer in `answer: label` format. | |
| ```python | |
| import json | |
| from urllib.request import Request, urlopen | |
| state = {"question": "What is the capital of France?"} | |
| options = ["Paris", "London", "Berlin", "Rome"] | |
| schema = {"questions": [{ | |
| "id": "answer", | |
| "type": "choice", | |
| "instructions": "Choose the correct answer to the question.", | |
| "options": options | |
| }]} | |
| body = { | |
| "model": "w1-jev", | |
| "messages": [ | |
| {"role": "system", "content": json.dumps(schema)}, | |
| {"role": "user", "content": json.dumps(state)} | |
| ] | |
| } | |
| request = Request( | |
| "http://127.0.0.1:8011/v1/chat/completions", | |
| data=json.dumps(body).encode(), | |
| headers={"Content-Type": "application/json"} | |
| ) | |
| with urlopen(request, timeout=600) as response: | |
| reply = json.load(response) | |
| answers = json.loads(reply["choices"][0]["message"]["content"])["answers"] | |
| print(answers["answer"]["label"]) # A, B, C, or D | |
| ``` | |
| For questions that need context, add it to `state`, for example `{"question": "...", "context": "..."}`. Use 2–26 options; the complete input must fit `model.max_seq_len` in `config.json` (4,096 tokens by default). | |