baberu-ocr-webgpu / serve_browser.py
ameraino11's picture
Add optimized unified Gather WebGPU models
8020c75 verified
Raw
History Blame Contribute Delete
1.66 kB
from __future__ import annotations
import json
from http.server import SimpleHTTPRequestHandler, ThreadingHTTPServer
from pathlib import Path
RESULTS_DIR = Path(".cache/browser-results")
class BrowserHandler(SimpleHTTPRequestHandler):
def do_POST(self) -> None:
if self.path != "/benchmark-result":
self.send_error(404)
return
length = int(self.headers.get("Content-Length", "0"))
if length <= 0 or length > 1_000_000:
self.send_error(400, "invalid result size")
return
result = json.loads(self.rfile.read(length))
bundle = result.get("bundle")
if bundle not in {
"compact-qdq",
"compact-fp16",
"compact-unified-qdq",
"compact-unified-gather",
"balanced-unified-qdq",
"balanced-unified-gather",
"balanced-qdq",
"lossless",
}:
self.send_error(400, "unknown bundle")
return
RESULTS_DIR.mkdir(parents=True, exist_ok=True)
destination = RESULTS_DIR / f"hayai13-{bundle}.json"
destination.write_text(json.dumps(result, ensure_ascii=False, indent=2) + "\n")
self.send_response(204)
self.end_headers()
def end_headers(self) -> None:
self.send_header("Cross-Origin-Opener-Policy", "same-origin")
self.send_header("Cross-Origin-Embedder-Policy", "require-corp")
self.send_header("Cross-Origin-Resource-Policy", "same-origin")
super().end_headers()
if __name__ == "__main__":
ThreadingHTTPServer(("127.0.0.1", 8765), BrowserHandler).serve_forever()