import{s as xl,n as Vl,o as El}from"../chunks/scheduler.3a17fb72.js";import{S as Rl,i as _l,e as r,s as n,c as i,q as Nl,h as Ql,a as d,d as t,b as a,f as ml,g as p,j as y,r as Al,k as Ml,l as dl,m as s,n as o,t as m,o as M,p as c}from"../chunks/index.093f8863.js";import{C as Sl,H as h,E as Yl}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.87e87726.js";import{C as T}from"../chunks/CodeBlock.0812be60.js";function Xl(yl){let u,ye,re,he,w,ue,g,Te,U,hl=`Lighteval allows you to evaluate custom model implementations by creating a custom model class that inherits from <code>LightevalModel</code>.
This is useful when you want to evaluate models that aren’t directly supported by the standard backends and providers (Transformers, VLLM, etc.), or
if you want to add your own pre/post-processing logic.`,Je,f,we,j,ge,b,ul="Create a Python file containing your custom model implementation. The model must inherit from <code>LightevalModel</code> and implement all required methods.",Ue,C,Tl="Here’s a basic example:",fe,I,je,$,be,G,Jl="The custom model file should contain exactly one class that inherits from <code>LightevalModel</code>. This class will be automatically detected and instantiated when loading the model.",Ce,J,wl="<p>You can find a complete example of a custom model implementation in <code>examples/custom_models/google_translate_model.py</code>.</p>",Ie,Z,$e,B,gl="You can evaluate your custom model using either the command-line interface or the Python API.",Ge,v,Ze,W,Be,k,Ul="The command takes three required arguments:",ve,x,fl="<li><strong>Model name</strong>: Used for tracking in results/logs</li> <li><strong>Model implementation file path</strong>: Path to your Python file containing the custom model</li> <li><strong>Tasks</strong>: Tasks to evaluate on (same format as other backends)</li>",We,V,ke,E,xe,R,Ve,_,jl="Your custom model must implement these core methods:",Ee,N,Re,Q,bl="For generating text until a stop sequence or max tokens is reached. This is used for generative evaluations.",_e,A,Ne,S,Qe,Y,Cl="For computing log probabilities of specific continuations. This is used for multiple choice logprob evaluations.",Ae,X,Se,z,Ye,F,Il="For computing rolling log probabilities of sequences. This is used for perplexity metrics.",Xe,L,ze,H,$l="See the <code>LightevalModel</code> base class documentation for detailed method signatures and requirements.",Fe,q,Le,P,Gl=`Lighteval includes a caching system that can significantly speed up evaluations by storing and reusing model predictions.
To enable caching in your custom model:`,He,D,qe,K,Pe,O,De,ee,Ke,le,ce,cl,te,Oe,se,Zl='For detailed information about the caching system, see the <a href="caching">Caching Documentation</a>.',el,ne,ll,ae,tl,ie,Bl="<li><strong>Import Errors</strong>: Ensure all required dependencies are installed</li> <li><strong>Method Signature Errors</strong>: Verify your methods match the expected signatures</li> <li><strong>Caching Issues</strong>: Check that cache decorators are applied correctly</li> <li><strong>Performance Issues</strong>: Consider implementing batching and caching</li>",sl,pe,nl,oe,vl="<li>Use the <code>--max-samples</code> flag to test with a small dataset</li> <li>Enable detailed logging to see what’s happening</li> <li>Test individual methods in isolation</li> <li>Check the example implementations for reference</li>",al,me,Wl='For more detailed information about custom model implementation, see the <a href="package_reference/models">Model Reference</a>.',il,Me,pl,de,ol;return w=new Sl({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),g=new h({props:{title:"Evaluating Custom Models",local:"evaluating-custom-models",headingTag:"h1"}}),f=new h({props:{title:"Creating a Custom Model",local:"creating-a-custom-model",headingTag:"h2"}}),j=new h({props:{title:"Step 1: Create Your Model Implementation",local:"step-1-create-your-model-implementation",headingTag:"h3"}}),I=new T({props:{code:"ZnJvbSUyMGxpZ2h0ZXZhbC5tb2RlbHMuYWJzdHJhY3RfbW9kZWwlMjBpbXBvcnQlMjBMaWdodGV2YWxNb2RlbCUwQWZyb20lMjBsaWdodGV2YWwubW9kZWxzLm1vZGVsX291dHB1dCUyMGltcG9ydCUyME1vZGVsUmVzcG9uc2UlMEFmcm9tJTIwbGlnaHRldmFsLnRhc2tzLnJlcXVlc3RzJTIwaW1wb3J0JTIwRG9jJTJDJTIwU2FtcGxpbmdNZXRob2QlMEFmcm9tJTIwbGlnaHRldmFsLnV0aWxzLmNhY2hlX21hbmFnZW1lbnQlMjBpbXBvcnQlMjBTYW1wbGVDYWNoZSUyQyUyMGNhY2hlZCUwQSUwQWNsYXNzJTIwTXlDdXN0b21Nb2RlbChMaWdodGV2YWxNb2RlbCklM0ElMEElMjAlMjAlMjAlMjBkZWYlMjBfX2luaXRfXyhzZWxmJTJDJTIwY29uZmlnKSUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHN1cGVyKCkuX19pbml0X18oY29uZmlnKSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMyUyMEluaXRpYWxpemUlMjB5b3VyJTIwbW9kZWwlMjBoZXJlLi4uJTBBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIzJTIwRW5hYmxlJTIwY2FjaGluZyUyMChyZWNvbW1lbmRlZCklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBzZWxmLl9jYWNoZSUyMCUzRCUyMFNhbXBsZUNhY2hlKGNvbmZpZyklMEElMEElMjAlMjAlMjAlMjAlNDBjYWNoZWQoU2FtcGxpbmdNZXRob2QuR0VORVJBVElWRSklMEElMjAlMjAlMjAlMjBkZWYlMjBncmVlZHlfdW50aWwoc2VsZiUyQyUyMGRvY3MlM0ElMjBMaXN0JTVCRG9jJTVEKSUyMC0lM0UlMjBMaXN0JTVCTW9kZWxSZXNwb25zZSU1RCUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMyUyMEltcGxlbWVudCUyMGdlbmVyYXRpb24lMjBsb2dpYyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHBhc3MlMEElMEElMjAlMjAlMjAlMjAlNDBjYWNoZWQoU2FtcGxpbmdNZXRob2QuTE9HUFJPQlMpJTBBJTIwJTIwJTIwJTIwZGVmJTIwbG9nbGlrZWxpaG9vZChzZWxmJTJDJTIwZG9jcyUzQSUyMExpc3QlNUJEb2MlNUQpJTIwLSUzRSUyMExpc3QlNUJNb2RlbFJlc3BvbnNlJTVEJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIzJTIwSW1wbGVtZW50JTIwbG9nbGlrZWxpaG9vZCUyMGNvbXB1dGF0aW9uJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcGFzcyUwQSUwQSUyMCUyMCUyMCUyMCU0MGNhY2hlZChTYW1wbGluZ01ldGhvZC5QRVJQTEVYSVRZKSUwQSUyMCUyMCUyMCUyMGRlZiUyMGxvZ2xpa2VsaWhvb2Rfcm9sbGluZyhzZWxmJTJDJTIwZG9jcyUzQSUyMExpc3QlNUJEb2MlNUQpJTIwLSUzRSUyMExpc3QlNUJNb2RlbFJlc3BvbnNlJTVEJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIzJTIwSW1wbGVtZW50JTIwcm9sbGluZyUyMGxvZ2xpa2VsaWhvb2QlMjBjb21wdXRhdGlvbiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHBhc3M=",highlighted:`<span class="hljs-keyword">from</span> lighteval.models.abstract_model <span class="hljs-keyword">import</span> LightevalModel
<span class="hljs-keyword">from</span> lighteval.models.model_output <span class="hljs-keyword">import</span> ModelResponse
<span class="hljs-keyword">from</span> lighteval.tasks.requests <span class="hljs-keyword">import</span> Doc, SamplingMethod
<span class="hljs-keyword">from</span> lighteval.utils.cache_management <span class="hljs-keyword">import</span> SampleCache, cached

<span class="hljs-keyword">class</span> <span class="hljs-title class_">MyCustomModel</span>(<span class="hljs-title class_ inherited__">LightevalModel</span>):
    <span class="hljs-keyword">def</span> <span class="hljs-title function_">__init__</span>(<span class="hljs-params">self, config</span>):
        <span class="hljs-built_in">super</span>().__init__(config)
        <span class="hljs-comment"># Initialize your model here...</span>

        <span class="hljs-comment"># Enable caching (recommended)</span>
        self._cache = SampleCache(config)

<span class="hljs-meta">    @cached(<span class="hljs-params">SamplingMethod.GENERATIVE</span>)</span>
    <span class="hljs-keyword">def</span> <span class="hljs-title function_">greedy_until</span>(<span class="hljs-params">self, docs: <span class="hljs-type">List</span>[Doc]</span>) -&gt; <span class="hljs-type">List</span>[ModelResponse]:
        <span class="hljs-comment"># Implement generation logic</span>
        <span class="hljs-keyword">pass</span>

<span class="hljs-meta">    @cached(<span class="hljs-params">SamplingMethod.LOGPROBS</span>)</span>
    <span class="hljs-keyword">def</span> <span class="hljs-title function_">loglikelihood</span>(<span class="hljs-params">self, docs: <span class="hljs-type">List</span>[Doc]</span>) -&gt; <span class="hljs-type">List</span>[ModelResponse]:
        <span class="hljs-comment"># Implement loglikelihood computation</span>
        <span class="hljs-keyword">pass</span>

<span class="hljs-meta">    @cached(<span class="hljs-params">SamplingMethod.PERPLEXITY</span>)</span>
    <span class="hljs-keyword">def</span> <span class="hljs-title function_">loglikelihood_rolling</span>(<span class="hljs-params">self, docs: <span class="hljs-type">List</span>[Doc]</span>) -&gt; <span class="hljs-type">List</span>[ModelResponse]:
        <span class="hljs-comment"># Implement rolling loglikelihood computation</span>
        <span class="hljs-keyword">pass</span>`,wrap:!1}}),$=new h({props:{title:"Step 2: Model File Requirements",local:"step-2-model-file-requirements",headingTag:"h3"}}),Z=new h({props:{title:"Running the Evaluation",local:"running-the-evaluation",headingTag:"h2"}}),v=new h({props:{title:"Using the Command Line",local:"using-the-command-line",headingTag:"h3"}}),W=new T({props:{code:"bGlnaHRldmFsJTIwY3VzdG9tJTIwJTVDJTBBJTIwJTIwJTIwJTIwJTIyZ29vZ2xlLXRyYW5zbGF0ZSUyMiUyMCU1QyUwQSUyMCUyMCUyMCUyMCUyMmV4YW1wbGVzJTJGY3VzdG9tX21vZGVscyUyRmdvb2dsZV90cmFuc2xhdGVfbW9kZWwucHklMjIlMjAlNUMlMEElMjAlMjAlMjAlMjAlMjJ3bXQyMCUzQWZyLWRlJTIwJTVDJTBBJTIwJTIwJTIwJTIwLS1tYXgtc2FtcGxlcyUyMDEw",highlighted:`lighteval custom \\
    <span class="hljs-string">&quot;google-translate&quot;</span> \\
    <span class="hljs-string">&quot;examples/custom_models/google_translate_model.py&quot;</span> \\
    <span class="hljs-string">&quot;wmt20:fr-de \\
    --max-samples 10</span>`,wrap:!1}}),V=new h({props:{title:"Using the Python API",local:"using-the-python-api",headingTag:"h3"}}),E=new T({props:{code:"ZnJvbSUyMGxpZ2h0ZXZhbC5sb2dnaW5nLmV2YWx1YXRpb25fdHJhY2tlciUyMGltcG9ydCUyMEV2YWx1YXRpb25UcmFja2VyJTBBZnJvbSUyMGxpZ2h0ZXZhbC5tb2RlbHMuY3VzdG9tLmN1c3RvbV9tb2RlbCUyMGltcG9ydCUyMEN1c3RvbU1vZGVsQ29uZmlnJTBBZnJvbSUyMGxpZ2h0ZXZhbC5waXBlbGluZSUyMGltcG9ydCUyMFBpcGVsaW5lJTJDJTIwUGlwZWxpbmVQYXJhbWV0ZXJzJTJDJTIwUGFyYWxsZWxpc21NYW5hZ2VyJTBBJTBBJTIzJTIwU2V0JTIwdXAlMjBldmFsdWF0aW9uJTIwdHJhY2tpbmclMEFldmFsdWF0aW9uX3RyYWNrZXIlMjAlM0QlMjBFdmFsdWF0aW9uVHJhY2tlciglMEElMjAlMjAlMjAlMjBvdXRwdXRfZGlyJTNEJTIycmVzdWx0cyUyMiUyQyUwQSUyMCUyMCUyMCUyMHNhdmVfZGV0YWlscyUzRFRydWUlMEEpJTBBJTBBJTIzJTIwQ29uZmlndXJlJTIwdGhlJTIwcGlwZWxpbmUlMEFwaXBlbGluZV9wYXJhbXMlMjAlM0QlMjBQaXBlbGluZVBhcmFtZXRlcnMoJTBBJTIwJTIwJTIwJTIwbGF1bmNoZXJfdHlwZSUzRFBhcmFsbGVsaXNtTWFuYWdlci5DVVNUT00lMkMlMEEpJTBBJTBBJTIzJTIwQ29uZmlndXJlJTIweW91ciUyMGN1c3RvbSUyMG1vZGVsJTBBbW9kZWxfY29uZmlnJTIwJTNEJTIwQ3VzdG9tTW9kZWxDb25maWcoJTBBJTIwJTIwJTIwJTIwbW9kZWxfbmFtZSUzRCUyMm15LWN1c3RvbS1tb2RlbCUyMiUyQyUwQSUyMCUyMCUyMCUyMG1vZGVsX2RlZmluaXRpb25fZmlsZV9wYXRoJTNEJTIycGF0aCUyRnRvJTJGbXlfbW9kZWwucHklMjIlMEEpJTBBJTBBJTIzJTIwQ3JlYXRlJTIwYW5kJTIwcnVuJTIwdGhlJTIwcGlwZWxpbmUlMEFwaXBlbGluZSUyMCUzRCUyMFBpcGVsaW5lKCUwQSUyMCUyMCUyMCUyMHRhc2tzJTNEdHJ1dGhmdWxxYSUzQW1jJTJDJTBBJTIwJTIwJTIwJTIwcGlwZWxpbmVfcGFyYW1ldGVycyUzRHBpcGVsaW5lX3BhcmFtcyUyQyUwQSUyMCUyMCUyMCUyMGV2YWx1YXRpb25fdHJhY2tlciUzRGV2YWx1YXRpb25fdHJhY2tlciUyQyUwQSUyMCUyMCUyMCUyMG1vZGVsX2NvbmZpZyUzRG1vZGVsX2NvbmZpZyUwQSklMEElMEFwaXBlbGluZS5ldmFsdWF0ZSgpJTBBcGlwZWxpbmUuc2F2ZV9hbmRfcHVzaF9yZXN1bHRzKCk=",highlighted:`<span class="hljs-keyword">from</span> lighteval.logging.evaluation_tracker <span class="hljs-keyword">import</span> EvaluationTracker
<span class="hljs-keyword">from</span> lighteval.models.custom.custom_model <span class="hljs-keyword">import</span> CustomModelConfig
<span class="hljs-keyword">from</span> lighteval.pipeline <span class="hljs-keyword">import</span> Pipeline, PipelineParameters, ParallelismManager

<span class="hljs-comment"># Set up evaluation tracking</span>
evaluation_tracker = EvaluationTracker(
    output_dir=<span class="hljs-string">&quot;results&quot;</span>,
    save_details=<span class="hljs-literal">True</span>
)

<span class="hljs-comment"># Configure the pipeline</span>
pipeline_params = PipelineParameters(
    launcher_type=ParallelismManager.CUSTOM,
)

<span class="hljs-comment"># Configure your custom model</span>
model_config = CustomModelConfig(
    model_name=<span class="hljs-string">&quot;my-custom-model&quot;</span>,
    model_definition_file_path=<span class="hljs-string">&quot;path/to/my_model.py&quot;</span>
)

<span class="hljs-comment"># Create and run the pipeline</span>
pipeline = Pipeline(
    tasks=truthfulqa:mc,
    pipeline_parameters=pipeline_params,
    evaluation_tracker=evaluation_tracker,
    model_config=model_config
)

pipeline.evaluate()
pipeline.save_and_push_results()`,wrap:!1}}),R=new h({props:{title:"Required Methods",local:"required-methods",headingTag:"h2"}}),N=new h({props:{title:"greedy_until",local:"greedyuntil",headingTag:"h3"}}),A=new T({props:{code:"ZGVmJTIwZ3JlZWR5X3VudGlsKHNlbGYlMkMlMjBkb2NzJTNBJTIwbGlzdCU1QkRvYyU1RCklMjAtJTNFJTIwbGlzdCU1Qk1vZGVsUmVzcG9uc2UlNUQlM0ElMEElMjAlMjAlMjAlMjAlMjIlMjIlMjIlMEElMjAlMjAlMjAlMjBHZW5lcmF0ZSUyMHRleHQlMjB1bnRpbCUyMHN0b3AlMjBzZXF1ZW5jZSUyMG9yJTIwbWF4JTIwdG9rZW5zLiUwQSUwQSUyMCUyMCUyMCUyMEFyZ3MlM0ElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBkb2NzJTNBJTIwbGlzdCUyMG9mJTIwZG9jdW1lbnRzJTIwY29udGFpbmluZyUyMHByb21wdHMlMjBhbmQlMjBnZW5lcmF0aW9uJTIwcGFyYW1ldGVycyUwQSUwQSUyMCUyMCUyMCUyMFJldHVybnMlM0ElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBsaXN0JTIwb2YlMjBtb2RlbCUyMHJlc3BvbnNlcyUyMHdpdGglMjBnZW5lcmF0ZWQlMjB0ZXh0JTBBJTIwJTIwJTIwJTIwJTIyJTIyJTIyJTBBJTIwJTIwJTIwJTIwcGFzcw==",highlighted:`<span class="hljs-keyword">def</span> <span class="hljs-title function_">greedy_until</span>(<span class="hljs-params">self, docs: <span class="hljs-built_in">list</span>[Doc]</span>) -&gt; <span class="hljs-built_in">list</span>[ModelResponse]:
    <span class="hljs-string">&quot;&quot;&quot;
    Generate text until stop sequence or max tokens.

    Args:
        docs: list of documents containing prompts and generation parameters

    Returns:
        list of model responses with generated text
    &quot;&quot;&quot;</span>
    <span class="hljs-keyword">pass</span>`,wrap:!1}}),S=new h({props:{title:"loglikelihood",local:"loglikelihood",headingTag:"h3"}}),X=new T({props:{code:"ZGVmJTIwbG9nbGlrZWxpaG9vZChzZWxmJTJDJTIwZG9jcyUzQSUyMGxpc3QlNUJEb2MlNUQpJTIwLSUzRSUyMGxpc3QlNUJNb2RlbFJlc3BvbnNlJTVEJTNBJTBBJTIwJTIwJTIwJTIwJTIyJTIyJTIyJTBBJTIwJTIwJTIwJTIwQ29tcHV0ZSUyMGxvZyUyMHByb2JhYmlsaXRpZXMlMjBvZiUyMGNvbnRpbnVhdGlvbnMuJTBBJTBBJTIwJTIwJTIwJTIwQXJncyUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGRvY3MlM0ElMjBsaXN0JTIwb2YlMjBkb2N1bWVudHMlMjBjb250YWluaW5nJTIwY29udGV4dCUyMGFuZCUyMGNvbnRpbnVhdGlvbiUyMHBhaXJzJTBBJTBBJTIwJTIwJTIwJTIwUmV0dXJucyUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGxpc3QlMjBvZiUyMG1vZGVsJTIwcmVzcG9uc2VzJTIwd2l0aCUyMGxvZyUyMHByb2JhYmlsaXRpZXMlMEElMjAlMjAlMjAlMjAlMjIlMjIlMjIlMEElMjAlMjAlMjAlMjBwYXNz",highlighted:`<span class="hljs-keyword">def</span> <span class="hljs-title function_">loglikelihood</span>(<span class="hljs-params">self, docs: <span class="hljs-built_in">list</span>[Doc]</span>) -&gt; <span class="hljs-built_in">list</span>[ModelResponse]:
    <span class="hljs-string">&quot;&quot;&quot;
    Compute log probabilities of continuations.

    Args:
        docs: list of documents containing context and continuation pairs

    Returns:
        list of model responses with log probabilities
    &quot;&quot;&quot;</span>
    <span class="hljs-keyword">pass</span>`,wrap:!1}}),z=new h({props:{title:"loglikelihood_rolling",local:"loglikelihoodrolling",headingTag:"h3"}}),L=new T({props:{code:"ZGVmJTIwbG9nbGlrZWxpaG9vZF9yb2xsaW5nKHNlbGYlMkMlMjBkb2NzJTNBJTIwbGlzdCU1QkRvYyU1RCklMjAtJTNFJTIwbGlzdCU1Qk1vZGVsUmVzcG9uc2UlNUQlM0ElMEElMjAlMjAlMjAlMjAlMjIlMjIlMjIlMEElMjAlMjAlMjAlMjBDb21wdXRlJTIwcm9sbGluZyUyMGxvZyUyMHByb2JhYmlsaXRpZXMlMjBvZiUyMHNlcXVlbmNlcy4lMEElMEElMjAlMjAlMjAlMjBBcmdzJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZG9jcyUzQSUyMGxpc3QlMjBvZiUyMGRvY3VtZW50cyUyMGNvbnRhaW5pbmclMjB0ZXh0JTIwc2VxdWVuY2VzJTBBJTBBJTIwJTIwJTIwJTIwUmV0dXJucyUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGxpc3QlMjBvZiUyMG1vZGVsJTIwcmVzcG9uc2VzJTIwd2l0aCUyMHJvbGxpbmclMjBsb2clMjBwcm9iYWJpbGl0aWVzJTBBJTIwJTIwJTIwJTIwJTIyJTIyJTIyJTBBJTIwJTIwJTIwJTIwcGFzcw==",highlighted:`<span class="hljs-keyword">def</span> <span class="hljs-title function_">loglikelihood_rolling</span>(<span class="hljs-params">self, docs: <span class="hljs-built_in">list</span>[Doc]</span>) -&gt; <span class="hljs-built_in">list</span>[ModelResponse]:
    <span class="hljs-string">&quot;&quot;&quot;
    Compute rolling log probabilities of sequences.

    Args:
        docs: list of documents containing text sequences

    Returns:
        list of model responses with rolling log probabilities
    &quot;&quot;&quot;</span>
    <span class="hljs-keyword">pass</span>`,wrap:!1}}),q=new h({props:{title:"Enabling Caching (Recommended)",local:"enabling-caching-recommended",headingTag:"h2"}}),D=new h({props:{title:"Step 1: Import Caching Components",local:"step-1-import-caching-components",headingTag:"h3"}}),K=new T({props:{code:"ZnJvbSUyMGxpZ2h0ZXZhbC51dGlscy5jYWNoZV9tYW5hZ2VtZW50JTIwaW1wb3J0JTIwU2FtcGxlQ2FjaGUlMkMlMjBjYWNoZWQ=",highlighted:'<span class="hljs-keyword">from</span> lighteval.utils.cache_management <span class="hljs-keyword">import</span> SampleCache, cached',wrap:!1}}),O=new h({props:{title:"Step 2: Initialize Cache in Constructor",local:"step-2-initialize-cache-in-constructor",headingTag:"h3"}}),ee=new T({props:{code:"ZGVmJTIwX19pbml0X18oc2VsZiUyQyUyMGNvbmZpZyklM0ElMEElMjAlMjAlMjAlMjBzdXBlcigpLl9faW5pdF9fKGNvbmZpZyklMEElMjAlMjAlMjAlMjAlMjMlMjBZb3VyJTIwaW5pdGlhbGl6YXRpb24lMjBjb2RlLi4uJTBBJTIwJTIwJTIwJTIwc2VsZi5fY2FjaGUlMjAlM0QlMjBTYW1wbGVDYWNoZShjb25maWcp",highlighted:`<span class="hljs-keyword">def</span> <span class="hljs-title function_">__init__</span>(<span class="hljs-params">self, config</span>):
    <span class="hljs-built_in">super</span>().__init__(config)
    <span class="hljs-comment"># Your initialization code...</span>
    self._cache = SampleCache(config)`,wrap:!1}}),te=new T({props:{code:"JTQwY2FjaGVkKFNhbXBsaW5nTWV0aG9kLkdFTkVSQVRJVkUpJTBBZGVmJTIwZ3JlZWR5X3VudGlsKHNlbGYlMkMlMjBkb2NzJTNBJTIwTGlzdCU1QkRvYyU1RCklMjAtJTNFJTIwTGlzdCU1Qk1vZGVsUmVzcG9uc2UlNUQlM0ElMEElMjAlMjAlMjAlMjAlMjMlMjBZb3VyJTIwaW1wbGVtZW50YXRpb24uLi4=",highlighted:`<span class="hljs-meta">@cached(<span class="hljs-params">SamplingMethod.GENERATIVE</span>)</span>
<span class="hljs-keyword">def</span> <span class="hljs-title function_">greedy_until</span>(<span class="hljs-params">self, docs: <span class="hljs-type">List</span>[Doc]</span>) -&gt; <span class="hljs-type">List</span>[ModelResponse]:
    <span class="hljs-comment"># Your implementation...</span>`,wrap:!1}}),ne=new h({props:{title:"Troubleshooting",local:"troubleshooting",headingTag:"h2"}}),ae=new h({props:{title:"Common Issues",local:"common-issues",headingTag:"h3"}}),pe=new h({props:{title:"Debugging Tips",local:"debugging-tips",headingTag:"h3"}}),Me=new Yl({props:{source:"https://github.com/huggingface/lighteval/blob/main/docs/source/evaluating-a-custom-model.mdx"}}),{c(){u=r("meta"),ye=n(),re=r("p"),he=n(),i(w.$$.fragment),ue=n(),i(g.$$.fragment),Te=n(),U=r("p"),U.innerHTML=hl,Je=n(),i(f.$$.fragment),we=n(),i(j.$$.fragment),ge=n(),b=r("p"),b.innerHTML=ul,Ue=n(),C=r("p"),C.textContent=Tl,fe=n(),i(I.$$.fragment),je=n(),i($.$$.fragment),be=n(),G=r("p"),G.innerHTML=Jl,Ce=n(),J=r("blockquote"),J.innerHTML=wl,Ie=n(),i(Z.$$.fragment),$e=n(),B=r("p"),B.textContent=gl,Ge=n(),i(v.$$.fragment),Ze=n(),i(W.$$.fragment),Be=n(),k=r("p"),k.textContent=Ul,ve=n(),x=r("ul"),x.innerHTML=fl,We=n(),i(V.$$.fragment),ke=n(),i(E.$$.fragment),xe=n(),i(R.$$.fragment),Ve=n(),_=r("p"),_.textContent=jl,Ee=n(),i(N.$$.fragment),Re=n(),Q=r("p"),Q.textContent=bl,_e=n(),i(A.$$.fragment),Ne=n(),i(S.$$.fragment),Qe=n(),Y=r("p"),Y.textContent=Cl,Ae=n(),i(X.$$.fragment),Se=n(),i(z.$$.fragment),Ye=n(),F=r("p"),F.textContent=Il,Xe=n(),i(L.$$.fragment),ze=n(),H=r("p"),H.innerHTML=$l,Fe=n(),i(q.$$.fragment),Le=n(),P=r("p"),P.textContent=Gl,He=n(),i(D.$$.fragment),qe=n(),i(K.$$.fragment),Pe=n(),i(O.$$.fragment),De=n(),i(ee.$$.fragment),Ke=n(),le=r("ol"),ce=r("li"),cl=Nl(`Add cache decorators to your prediction methods:

	`),i(te.$$.fragment),Oe=n(),se=r("p"),se.innerHTML=Zl,el=n(),i(ne.$$.fragment),ll=n(),i(ae.$$.fragment),tl=n(),ie=r("ol"),ie.innerHTML=Bl,sl=n(),i(pe.$$.fragment),nl=n(),oe=r("ul"),oe.innerHTML=vl,al=n(),me=r("p"),me.innerHTML=Wl,il=n(),i(Me.$$.fragment),pl=n(),de=r("p"),this.h()},l(e){const l=Ql("svelte-u9bgzb",document.head);u=d(l,"META",{name:!0,content:!0}),l.forEach(t),ye=a(e),re=d(e,"P",{}),ml(re).forEach(t),he=a(e),p(w.$$.fragment,e),ue=a(e),p(g.$$.fragment,e),Te=a(e),U=d(e,"P",{"data-svelte-h":!0}),y(U)!=="svelte-15yahec"&&(U.innerHTML=hl),Je=a(e),p(f.$$.fragment,e),we=a(e),p(j.$$.fragment,e),ge=a(e),b=d(e,"P",{"data-svelte-h":!0}),y(b)!=="svelte-64btiy"&&(b.innerHTML=ul),Ue=a(e),C=d(e,"P",{"data-svelte-h":!0}),y(C)!=="svelte-1frc3d"&&(C.textContent=Tl),fe=a(e),p(I.$$.fragment,e),je=a(e),p($.$$.fragment,e),be=a(e),G=d(e,"P",{"data-svelte-h":!0}),y(G)!=="svelte-4gi028"&&(G.innerHTML=Jl),Ce=a(e),J=d(e,"BLOCKQUOTE",{class:!0,"data-svelte-h":!0}),y(J)!=="svelte-1m7vrvf"&&(J.innerHTML=wl),Ie=a(e),p(Z.$$.fragment,e),$e=a(e),B=d(e,"P",{"data-svelte-h":!0}),y(B)!=="svelte-md1ogy"&&(B.textContent=gl),Ge=a(e),p(v.$$.fragment,e),Ze=a(e),p(W.$$.fragment,e),Be=a(e),k=d(e,"P",{"data-svelte-h":!0}),y(k)!=="svelte-9ha93v"&&(k.textContent=Ul),ve=a(e),x=d(e,"UL",{"data-svelte-h":!0}),y(x)!=="svelte-7oyst4"&&(x.innerHTML=fl),We=a(e),p(V.$$.fragment,e),ke=a(e),p(E.$$.fragment,e),xe=a(e),p(R.$$.fragment,e),Ve=a(e),_=d(e,"P",{"data-svelte-h":!0}),y(_)!=="svelte-abp4ax"&&(_.textContent=jl),Ee=a(e),p(N.$$.fragment,e),Re=a(e),Q=d(e,"P",{"data-svelte-h":!0}),y(Q)!=="svelte-1nk29lo"&&(Q.textContent=bl),_e=a(e),p(A.$$.fragment,e),Ne=a(e),p(S.$$.fragment,e),Qe=a(e),Y=d(e,"P",{"data-svelte-h":!0}),y(Y)!=="svelte-1bufz8k"&&(Y.textContent=Cl),Ae=a(e),p(X.$$.fragment,e),Se=a(e),p(z.$$.fragment,e),Ye=a(e),F=d(e,"P",{"data-svelte-h":!0}),y(F)!=="svelte-dqj7yp"&&(F.textContent=Il),Xe=a(e),p(L.$$.fragment,e),ze=a(e),H=d(e,"P",{"data-svelte-h":!0}),y(H)!=="svelte-845vib"&&(H.innerHTML=$l),Fe=a(e),p(q.$$.fragment,e),Le=a(e),P=d(e,"P",{"data-svelte-h":!0}),y(P)!=="svelte-1eshig5"&&(P.textContent=Gl),He=a(e),p(D.$$.fragment,e),qe=a(e),p(K.$$.fragment,e),Pe=a(e),p(O.$$.fragment,e),De=a(e),p(ee.$$.fragment,e),Ke=a(e),le=d(e,"OL",{start:!0});var kl=ml(le);ce=d(kl,"LI",{});var rl=ml(ce);cl=Al(rl,`Add cache decorators to your prediction methods:

	`),p(te.$$.fragment,rl),rl.forEach(t),kl.forEach(t),Oe=a(e),se=d(e,"P",{"data-svelte-h":!0}),y(se)!=="svelte-eqax9m"&&(se.innerHTML=Zl),el=a(e),p(ne.$$.fragment,e),ll=a(e),p(ae.$$.fragment,e),tl=a(e),ie=d(e,"OL",{"data-svelte-h":!0}),y(ie)!=="svelte-hifd4u"&&(ie.innerHTML=Bl),sl=a(e),p(pe.$$.fragment,e),nl=a(e),oe=d(e,"UL",{"data-svelte-h":!0}),y(oe)!=="svelte-1g8hpki"&&(oe.innerHTML=vl),al=a(e),me=d(e,"P",{"data-svelte-h":!0}),y(me)!=="svelte-15nhhnt"&&(me.innerHTML=Wl),il=a(e),p(Me.$$.fragment,e),pl=a(e),de=d(e,"P",{}),ml(de).forEach(t),this.h()},h(){Ml(u,"name","hf:doc:metadata"),Ml(u,"content",zl),Ml(J,"class","tip"),Ml(le,"start","3")},m(e,l){dl(document.head,u),s(e,ye,l),s(e,re,l),s(e,he,l),o(w,e,l),s(e,ue,l),o(g,e,l),s(e,Te,l),s(e,U,l),s(e,Je,l),o(f,e,l),s(e,we,l),o(j,e,l),s(e,ge,l),s(e,b,l),s(e,Ue,l),s(e,C,l),s(e,fe,l),o(I,e,l),s(e,je,l),o($,e,l),s(e,be,l),s(e,G,l),s(e,Ce,l),s(e,J,l),s(e,Ie,l),o(Z,e,l),s(e,$e,l),s(e,B,l),s(e,Ge,l),o(v,e,l),s(e,Ze,l),o(W,e,l),s(e,Be,l),s(e,k,l),s(e,ve,l),s(e,x,l),s(e,We,l),o(V,e,l),s(e,ke,l),o(E,e,l),s(e,xe,l),o(R,e,l),s(e,Ve,l),s(e,_,l),s(e,Ee,l),o(N,e,l),s(e,Re,l),s(e,Q,l),s(e,_e,l),o(A,e,l),s(e,Ne,l),o(S,e,l),s(e,Qe,l),s(e,Y,l),s(e,Ae,l),o(X,e,l),s(e,Se,l),o(z,e,l),s(e,Ye,l),s(e,F,l),s(e,Xe,l),o(L,e,l),s(e,ze,l),s(e,H,l),s(e,Fe,l),o(q,e,l),s(e,Le,l),s(e,P,l),s(e,He,l),o(D,e,l),s(e,qe,l),o(K,e,l),s(e,Pe,l),o(O,e,l),s(e,De,l),o(ee,e,l),s(e,Ke,l),s(e,le,l),dl(le,ce),dl(ce,cl),o(te,ce,null),s(e,Oe,l),s(e,se,l),s(e,el,l),o(ne,e,l),s(e,ll,l),o(ae,e,l),s(e,tl,l),s(e,ie,l),s(e,sl,l),o(pe,e,l),s(e,nl,l),s(e,oe,l),s(e,al,l),s(e,me,l),s(e,il,l),o(Me,e,l),s(e,pl,l),s(e,de,l),ol=!0},p:Vl,i(e){ol||(m(w.$$.fragment,e),m(g.$$.fragment,e),m(f.$$.fragment,e),m(j.$$.fragment,e),m(I.$$.fragment,e),m($.$$.fragment,e),m(Z.$$.fragment,e),m(v.$$.fragment,e),m(W.$$.fragment,e),m(V.$$.fragment,e),m(E.$$.fragment,e),m(R.$$.fragment,e),m(N.$$.fragment,e),m(A.$$.fragment,e),m(S.$$.fragment,e),m(X.$$.fragment,e),m(z.$$.fragment,e),m(L.$$.fragment,e),m(q.$$.fragment,e),m(D.$$.fragment,e),m(K.$$.fragment,e),m(O.$$.fragment,e),m(ee.$$.fragment,e),m(te.$$.fragment,e),m(ne.$$.fragment,e),m(ae.$$.fragment,e),m(pe.$$.fragment,e),m(Me.$$.fragment,e),ol=!0)},o(e){M(w.$$.fragment,e),M(g.$$.fragment,e),M(f.$$.fragment,e),M(j.$$.fragment,e),M(I.$$.fragment,e),M($.$$.fragment,e),M(Z.$$.fragment,e),M(v.$$.fragment,e),M(W.$$.fragment,e),M(V.$$.fragment,e),M(E.$$.fragment,e),M(R.$$.fragment,e),M(N.$$.fragment,e),M(A.$$.fragment,e),M(S.$$.fragment,e),M(X.$$.fragment,e),M(z.$$.fragment,e),M(L.$$.fragment,e),M(q.$$.fragment,e),M(D.$$.fragment,e),M(K.$$.fragment,e),M(O.$$.fragment,e),M(ee.$$.fragment,e),M(te.$$.fragment,e),M(ne.$$.fragment,e),M(ae.$$.fragment,e),M(pe.$$.fragment,e),M(Me.$$.fragment,e),ol=!1},d(e){e&&(t(ye),t(re),t(he),t(ue),t(Te),t(U),t(Je),t(we),t(ge),t(b),t(Ue),t(C),t(fe),t(je),t(be),t(G),t(Ce),t(J),t(Ie),t($e),t(B),t(Ge),t(Ze),t(Be),t(k),t(ve),t(x),t(We),t(ke),t(xe),t(Ve),t(_),t(Ee),t(Re),t(Q),t(_e),t(Ne),t(Qe),t(Y),t(Ae),t(Se),t(Ye),t(F),t(Xe),t(ze),t(H),t(Fe),t(Le),t(P),t(He),t(qe),t(Pe),t(De),t(Ke),t(le),t(Oe),t(se),t(el),t(ll),t(tl),t(ie),t(sl),t(nl),t(oe),t(al),t(me),t(il),t(pl),t(de)),t(u),c(w,e),c(g,e),c(f,e),c(j,e),c(I,e),c($,e),c(Z,e),c(v,e),c(W,e),c(V,e),c(E,e),c(R,e),c(N,e),c(A,e),c(S,e),c(X,e),c(z,e),c(L,e),c(q,e),c(D,e),c(K,e),c(O,e),c(ee,e),c(te),c(ne,e),c(ae,e),c(pe,e),c(Me,e)}}}const zl='{"title":"Evaluating Custom Models","local":"evaluating-custom-models","sections":[{"title":"Creating a Custom Model","local":"creating-a-custom-model","sections":[{"title":"Step 1: Create Your Model Implementation","local":"step-1-create-your-model-implementation","sections":[],"depth":3},{"title":"Step 2: Model File Requirements","local":"step-2-model-file-requirements","sections":[],"depth":3}],"depth":2},{"title":"Running the Evaluation","local":"running-the-evaluation","sections":[{"title":"Using the Command Line","local":"using-the-command-line","sections":[],"depth":3},{"title":"Using the Python API","local":"using-the-python-api","sections":[],"depth":3}],"depth":2},{"title":"Required Methods","local":"required-methods","sections":[{"title":"greedy_until","local":"greedyuntil","sections":[],"depth":3},{"title":"loglikelihood","local":"loglikelihood","sections":[],"depth":3},{"title":"loglikelihood_rolling","local":"loglikelihoodrolling","sections":[],"depth":3}],"depth":2},{"title":"Enabling Caching (Recommended)","local":"enabling-caching-recommended","sections":[{"title":"Step 1: Import Caching Components","local":"step-1-import-caching-components","sections":[],"depth":3},{"title":"Step 2: Initialize Cache in Constructor","local":"step-2-initialize-cache-in-constructor","sections":[],"depth":3}],"depth":2},{"title":"Troubleshooting","local":"troubleshooting","sections":[{"title":"Common Issues","local":"common-issues","sections":[],"depth":3},{"title":"Debugging Tips","local":"debugging-tips","sections":[],"depth":3}],"depth":2}],"depth":1}';function Fl(yl){return El(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Dl extends Rl{constructor(u){super(),_l(this,u,Fl,Xl,xl,{})}}export{Dl as component};
