From 58d929fd65a3850022a13828278a26f966f89197 Mon Sep 17 00:00:00 2001 From: "Timothy J. Baek" Date: Fri, 25 Oct 2024 21:07:16 -0700 Subject: [PATCH] enh: lazy load embedding model for leaderboard --- src/lib/components/admin/Evaluations.svelte | 30 +++++++++++++++++---- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/src/lib/components/admin/Evaluations.svelte b/src/lib/components/admin/Evaluations.svelte index ef9beb7a7..5407a09d8 100644 --- a/src/lib/components/admin/Evaluations.svelte +++ b/src/lib/components/admin/Evaluations.svelte @@ -23,6 +23,7 @@ import Share from '../icons/Share.svelte'; import CloudArrowUp from '../icons/CloudArrowUp.svelte'; import { toast } from 'svelte-sonner'; + import Spinner from '../common/Spinner.svelte'; const i18n = getContext('i18n'); @@ -35,6 +36,7 @@ let tagEmbeddings = new Map(); let loaded = false; + let loadingLeaderboard = true; let debounceTimer; $: paginatedFeedbacks = feedbacks.slice((page - 1) * 10, page * 10); @@ -91,6 +93,8 @@ if (a.rating !== '-' && b.rating !== '-') return b.rating - a.rating; return a.name.localeCompare(b.name); }); + + loadingLeaderboard = false; }; function calculateModelStats( @@ -227,6 +231,8 @@ }; const debouncedQueryHandler = async () => { + loadingLeaderboard = true; + if (query.trim() === '') { rankHandler(); return; @@ -294,10 +300,7 @@ window.addEventListener('message', messageHandler, false); }; - onMount(async () => { - feedbacks = await getAllFeedbacks(localStorage.token); - loaded = true; - + const loadEmbeddingModel = async () => { // Check if the tokenizer and model are already loaded and stored in the window object if (!window.tokenizer) { window.tokenizer = await AutoTokenizer.from_pretrained(EMBEDDING_MODEL); @@ -314,6 +317,11 @@ // Pre-compute embeddings for all unique tags const allTags = new Set(feedbacks.flatMap((feedback) => feedback.data.tags || [])); await getTagEmbeddings(Array.from(allTags)); + }; + + onMount(async () => { + feedbacks = await getAllFeedbacks(localStorage.token); + loaded = true; rankHandler(); }); @@ -343,6 +351,9 @@ class=" w-full text-sm pr-4 py-1 rounded-r-xl outline-none bg-transparent" bind:value={query} placeholder={$i18n.t('Search')} + on:focus={() => { + loadEmbeddingModel(); + }} /> @@ -352,13 +363,22 @@
+ {#if loadingLeaderboard} +
+
+ +
+
+ {/if} {#if (rankedModels ?? []).length === 0}
{$i18n.t('No models found')}
{:else}