fix: load progress in shared worker

This commit is contained in:
Tienson Qin
2025-08-01 00:03:22 +08:00
parent 1e84a21042
commit 1e8d7de446
3 changed files with 18 additions and 12 deletions

View File

@@ -76,13 +76,13 @@
;; A fast pprint alternative. ;; A fast pprint alternative.
(defn print-prefix-map* [prefix m print-one writer opts] (defn print-prefix-map* [prefix m print-one writer opts]
(pr-sequential-writer (pr-sequential-writer
writer writer
(fn [e w opts] (fn [e w opts]
(print-one (key e) w opts) (print-one (key e) w opts)
(-write w \space) (-write w \space)
(print-one (val e) w opts)) (print-one (val e) w opts))
(str prefix "\n{") \newline "}" (str prefix "\n{") \newline "}"
opts (seq m))) opts (seq m)))
(defn ugly-pr-str (defn ugly-pr-str
"Ugly printing fast, with newlines so that git diffs are smaller" "Ugly printing fast, with newlines so that git diffs are smaller"
@@ -91,6 +91,6 @@
(pr-str x))) (pr-str x)))
(defn post-message (defn post-message
[type data] [type data & {:keys [port]}]
(when (exists? js/self) (when-let [worker (or port js/self)]
(.postMessage js/self (ldb/write-transit-str [type data])))) (.postMessage worker (ldb/write-transit-str [type data]))))

View File

@@ -67,4 +67,6 @@
(glogi-console/install!) (glogi-console/install!)
(let [port (first (.-ports e)) (let [port (first (.-ports e))
^js obj #_{:clj-kondo/ignore [:unresolved-symbol]} (InferenceWorker.)] ^js obj #_{:clj-kondo/ignore [:unresolved-symbol]} (InferenceWorker.)]
(reset! infer-worker.text-embedding/*port port)
(.start port)
(Comlink/expose obj port)))) (Comlink/expose obj port))))

View File

@@ -19,6 +19,8 @@
(log/info :delete-hnsw-index repo) (log/info :delete-hnsw-index repo)
(.delete hnsw-index)))))) (.delete hnsw-index))))))
(defonce *port (atom nil))
(def ^:private embedding-opts #js{"pooling" "mean" "normalize" true}) (def ^:private embedding-opts #js{"pooling" "mean" "normalize" true})
(def ^:private init-max-elems 100) (def ^:private init-max-elems 100)
@@ -181,7 +183,7 @@
;; :hnsw-config {:dims 1024}} ;; :hnsw-config {:dims 1024}}
}) })
(def ^:private *load-model-progress (atom nil)) (defonce ^:private *load-model-progress (atom nil))
(defn <load-model (defn <load-model
[model-name] [model-name]
@@ -210,7 +212,9 @@
(c.m/run-background-task (c.m/run-background-task
::push-load-model-progress ::push-load-model-progress
(m/reduce (m/reduce
(fn [_ v] (worker-util/post-message :vector-search/load-model-progress v)) (fn [_ v]
(when-let [port @*port]
(worker-util/post-message :vector-search/load-model-progress v {:port port})))
(c.m/throttle 500 (m/watch *load-model-progress))))) (c.m/throttle 500 (m/watch *load-model-progress)))))
(comment (comment