@huggingface/tasks 0.20.11 → 0.20.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -32,6 +32,11 @@ export declare const EVALUATION_FRAMEWORKS: {
32
32
  readonly description: "Archipelago is a system for running and evaluating AI agents against MCP applications.";
33
33
  readonly url: "https://github.com/Mercor-Intelligence/archipelago";
34
34
  };
35
+ readonly "apex-evals": {
36
+ readonly name: "apex-evals";
37
+ readonly description: "APEX Evals is a benchmark suite and evaluation harness for evaluating large language models.";
38
+ readonly url: "https://github.com/Mercor-Intelligence/apex-evals";
39
+ };
35
40
  readonly "screenspot-pro": {
36
41
  readonly name: "screenspot-pro";
37
42
  readonly description: "ScreenSpot-Pro is a GUI grounding benchmark designed to evaluate how well AI agents can locate and identify UI elements across professional software applications in high-resolution screenshots, covering 1,585 annotated images from 26 professional tools.";
@@ -1 +1 @@
1
- {"version":3,"file":"eval.d.ts","sourceRoot":"","sources":["../../src/eval.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiExB,CAAC"}
1
+ {"version":3,"file":"eval.d.ts","sourceRoot":"","sources":["../../src/eval.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsExB,CAAC"}
@@ -35,6 +35,11 @@ exports.EVALUATION_FRAMEWORKS = {
35
35
  description: "Archipelago is a system for running and evaluating AI agents against MCP applications.",
36
36
  url: "https://github.com/Mercor-Intelligence/archipelago",
37
37
  },
38
+ "apex-evals": {
39
+ name: "apex-evals",
40
+ description: "APEX Evals is a benchmark suite and evaluation harness for evaluating large language models.",
41
+ url: "https://github.com/Mercor-Intelligence/apex-evals",
42
+ },
38
43
  "screenspot-pro": {
39
44
  name: "screenspot-pro",
40
45
  description: "ScreenSpot-Pro is a GUI grounding benchmark designed to evaluate how well AI agents can locate and identify UI elements across professional software applications in high-resolution screenshots, covering 1,585 annotated images from 26 professional tools.",
@@ -1 +1 @@
1
- {"version":3,"file":"hardware-nvidia.d.ts","sourceRoot":"","sources":["../../src/hardware-nvidia.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD,MAAM,WAAW,kBAAmB,SAAQ,YAAY;IACvD;;;;OAIG;IACH,iBAAiB,EAAE,MAAM,CAAC;CAC1B;AAED,oBAAY,yBAAyB;IACpC,eAAe,OAAO;IACtB,aAAa,KAAO;IACpB,SAAS,KAAO;IAChB,MAAM,IAAM;IACZ,YAAY,MAAM;IAClB,IAAI,MAAM;IACV,UAAU,MAAM;IAChB,MAAM,IAAM;IACZ,MAAM,MAAM;IACZ,MAAM,MAAM;IACZ,KAAK,IAAM;IACX,YAAY,MAAM;IAClB,MAAM,MAAM;IACZ,iBAAiB,IAAM;IACvB,OAAO,MAAM;CACb;AAED,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CA8gB1D,CAAC"}
1
+ {"version":3,"file":"hardware-nvidia.d.ts","sourceRoot":"","sources":["../../src/hardware-nvidia.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD,MAAM,WAAW,kBAAmB,SAAQ,YAAY;IACvD;;;;OAIG;IACH,iBAAiB,EAAE,MAAM,CAAC;CAC1B;AAED,oBAAY,yBAAyB;IACpC,eAAe,OAAO;IACtB,aAAa,KAAO;IACpB,SAAS,KAAO;IAChB,MAAM,IAAM;IACZ,YAAY,MAAM;IAClB,IAAI,MAAM;IACV,UAAU,MAAM;IAChB,MAAM,IAAM;IACZ,MAAM,MAAM;IACZ,MAAM,MAAM;IACZ,KAAK,IAAM;IACX,YAAY,MAAM;IAClB,MAAM,MAAM;IACZ,iBAAiB,IAAM;IACvB,OAAO,MAAM;CACb;AAED,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAwhB1D,CAAC"}
@@ -186,7 +186,7 @@ exports.NVIDIA_SKUS = {
186
186
  computeCapability: 8.6,
187
187
  },
188
188
  A2: {
189
- tflops: 4.531, // source: https://www.techpowerup.com/gpu-specs/a2.c3848
189
+ tflops: 4.531,
190
190
  memory: [16],
191
191
  computeCapability: 8.6,
192
192
  },
@@ -211,7 +211,7 @@ exports.NVIDIA_SKUS = {
211
211
  computeCapability: 12.0,
212
212
  },
213
213
  "RTX 5080 Mobile": {
214
- tflops: 24.58,
214
+ tflops: 23.04,
215
215
  memory: [16],
216
216
  computeCapability: 12.0,
217
217
  },
@@ -221,7 +221,7 @@ exports.NVIDIA_SKUS = {
221
221
  computeCapability: 12.0,
222
222
  },
223
223
  "RTX 5070 Mobile": {
224
- tflops: 23.22,
224
+ tflops: 13.13,
225
225
  memory: [8],
226
226
  computeCapability: 12.0,
227
227
  },
@@ -230,13 +230,23 @@ exports.NVIDIA_SKUS = {
230
230
  memory: [16],
231
231
  computeCapability: 12.0,
232
232
  },
233
+ "RTX 5070 Ti Mobile": {
234
+ tflops: 17.04,
235
+ memory: [12],
236
+ computeCapability: 12.0,
237
+ },
233
238
  "RTX 5060 Ti": {
234
- tflops: 23.7, // source https://www.techpowerup.com/gpu-specs/geforce-rtx-5060-ti.c4246
239
+ tflops: 23.7,
235
240
  memory: [16, 8],
236
241
  computeCapability: 12.0,
237
242
  },
238
243
  "RTX 5060": {
239
- tflops: 19.18, // source https://www.techpowerup.com/gpu-specs/geforce-rtx-5060.c4219
244
+ tflops: 19.18,
245
+ memory: [8],
246
+ computeCapability: 12.0,
247
+ },
248
+ "RTX 5060 Mobile": {
249
+ tflops: 9.684,
240
250
  memory: [8],
241
251
  computeCapability: 12.0,
242
252
  },
@@ -1 +1 @@
1
- {"version":3,"file":"local-apps.d.ts","sourceRoot":"","sources":["../../src/local-apps.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAKnD,MAAM,WAAW,eAAe;IAC/B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG;IACtB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,QAAQ,EAAE,YAAY,CAAC;IACvB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;OAEG;IACH,kBAAkB,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OAAO,CAAC;CAClD,GAAG,CACD;IACA;;OAEG;IACH,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,GAAG,CAAC;CACtD,GACD;IACA;;;;OAIG;IACH,OAAO,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,MAAM,GAAG,MAAM,EAAE,GAAG,eAAe,GAAG,eAAe,EAAE,CAAC;CACzG,CACH,CAAC;AAsBF,iBAAS,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAE7C;AAED,iBAAS,mBAAmB,CAAC,KAAK,EAAE,SAAS,WAE5C;AAED,iBAAS,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAU9C;AAED,iBAAS,wBAAwB,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAE3D;AA0BD,iBAAS,cAAc,CAAC,KAAK,EAAE,SAAS,WAEvC;AA6ZD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,UAAU;;;;;;yBA3ZS,SAAS,aAAa,MAAM,KAAG,eAAe,EAAE;;;;;;;yBAiDzC,SAAS,aAAa,MAAM,KAAG,eAAe,EAAE;;;;;;;yBAmF3D,SAAS,KAAG,eAAe,EAAE;;;;;;oCAiT3B,SAAS;yBA3PT,SAAS,KAAG,eAAe,EAAE;;;;;;;yBAoF9B,SAAS,KAAG,eAAe,EAAE;;;;;;;yBA7B/B,SAAS,KAAG,eAAe,EAAE;;;;;;;;;;;;;;yBApIzB,SAAS,aAAa,MAAM,KAAG,eAAe,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBA9CjD,SAAS,aAAa,MAAM,KAAG,MAAM;;;;;;;yBAIpC,SAAS,KAAG,eAAe,EAAE;;;;;;;yBA6RnB,SAAS,aAAa,MAAM,KAAG,MAAM;;;;;;;yBAM9C,SAAS,aAAa,MAAM,KAAG,eAAe,EAAE;;;;;;;yBArDtD,SAAS,aAAa,MAAM,KAAG,eAAe,EAAE;;CAuStC,CAAC;AAErC,MAAM,MAAM,WAAW,GAAG,MAAM,OAAO,UAAU,CAAC"}
1
+ {"version":3,"file":"local-apps.d.ts","sourceRoot":"","sources":["../../src/local-apps.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAKnD,MAAM,WAAW,eAAe;IAC/B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG;IACtB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,QAAQ,EAAE,YAAY,CAAC;IACvB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;OAEG;IACH,kBAAkB,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OAAO,CAAC;CAClD,GAAG,CACD;IACA;;OAEG;IACH,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,GAAG,CAAC;CACtD,GACD;IACA;;;;OAIG;IACH,OAAO,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,MAAM,GAAG,MAAM,EAAE,GAAG,eAAe,GAAG,eAAe,EAAE,CAAC;CACzG,CACH,CAAC;AAsBF,iBAAS,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAE7C;AAED,iBAAS,mBAAmB,CAAC,KAAK,EAAE,SAAS,WAE5C;AAED,iBAAS,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAU9C;AAED,iBAAS,wBAAwB,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAE3D;AA0BD,iBAAS,cAAc,CAAC,KAAK,EAAE,SAAS,WAEvC;AAqaD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,UAAU;;;;;;yBAnaS,SAAS,aAAa,MAAM,KAAG,eAAe,EAAE;;;;;;;yBAiDzC,SAAS,aAAa,MAAM,KAAG,eAAe,EAAE;;;;;;;yBA2F3D,SAAS,KAAG,eAAe,EAAE;;;;;;oCAiT3B,SAAS;yBA3PT,SAAS,KAAG,eAAe,EAAE;;;;;;;yBAoF9B,SAAS,KAAG,eAAe,EAAE;;;;;;;yBA7B/B,SAAS,KAAG,eAAe,EAAE;;;;;;;;;;;;;;yBApIzB,SAAS,aAAa,MAAM,KAAG,eAAe,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBAtDjD,SAAS,aAAa,MAAM,KAAG,MAAM;;;;;;;yBAIpC,SAAS,KAAG,eAAe,EAAE;;;;;;;yBAqSnB,SAAS,aAAa,MAAM,KAAG,MAAM;;;;;;;yBAM9C,SAAS,aAAa,MAAM,KAAG,eAAe,EAAE;;;;;;;yBArDtD,SAAS,aAAa,MAAM,KAAG,eAAe,EAAE;;CAuStC,CAAC;AAErC,MAAM,MAAM,WAAW,GAAG,MAAM,OAAO,UAAU,CAAC"}
@@ -134,15 +134,21 @@ const snippetOllama = (model, filepath) => {
134
134
  };
135
135
  const snippetUnsloth = (model) => {
136
136
  const isGguf = isLlamaCppGgufModel(model);
137
+ const studio_content = [
138
+ "# Run unsloth studio",
139
+ "unsloth studio -H 0.0.0.0 -p 8888",
140
+ "# Then open http://localhost:8888 in your browser",
141
+ "# Search for " + model.id + " to start chatting",
142
+ ].join("\n");
137
143
  const studio_instructions = {
138
- title: "Open model in Unsloth Studio",
139
- setup: ["pip install unsloth", "unsloth studio setup"].join("\n"),
140
- content: [
141
- "# Run unsloth studio",
142
- "unsloth studio -H 0.0.0.0 -p 8000",
143
- "# Then open http://localhost:8000/chat in your browser",
144
- "# Search for " + model.id + " to start chatting",
145
- ].join("\n"),
144
+ title: "Install Unsloth Studio (macOS, Linux, WSL)",
145
+ setup: "curl -fsSL https://unsloth.ai/install.sh | sh",
146
+ content: studio_content,
147
+ };
148
+ const studio_instructions_windows = {
149
+ title: "Install Unsloth Studio (Windows)",
150
+ setup: "irm https://unsloth.ai/install.ps1 | iex",
151
+ content: studio_content,
146
152
  };
147
153
  const hf_spaces_instructions = {
148
154
  title: "Using HuggingFace Spaces for Unsloth",
@@ -163,10 +169,10 @@ const snippetUnsloth = (model) => {
163
169
  ].join("\n"),
164
170
  };
165
171
  if (isGguf) {
166
- return [studio_instructions, hf_spaces_instructions];
172
+ return [studio_instructions, studio_instructions_windows, hf_spaces_instructions];
167
173
  }
168
174
  else {
169
- return [studio_instructions, hf_spaces_instructions, fastmodel_instructions];
175
+ return [studio_instructions, studio_instructions_windows, hf_spaces_instructions, fastmodel_instructions];
170
176
  }
171
177
  };
172
178
  const snippetLocalAI = (model, filepath) => {
@@ -167,12 +167,14 @@ curl -X POST "http://localhost:8000/v1/chat/completions" \\
167
167
  };
168
168
  (0, vitest_1.expect)(displayOnModelPage(model)).toBe(true);
169
169
  const snippet = snippetFunc(model);
170
- (0, vitest_1.expect)(snippet[0].setup).toBe("pip install unsloth\nunsloth studio setup");
171
- (0, vitest_1.expect)(snippet[0].content).toBe("# Run unsloth studio\nunsloth studio -H 0.0.0.0 -p 8000\n# Then open http://localhost:8000/chat in your browser\n# Search for some-user/my-unsloth-finetune to start chatting");
172
- (0, vitest_1.expect)(snippet[1].setup).toBe("# No setup required");
173
- (0, vitest_1.expect)(snippet[1].content).toBe("# Open https://huggingface.co/spaces/unsloth/studio in your browser\n# Search for some-user/my-unsloth-finetune to start chatting");
174
- (0, vitest_1.expect)(snippet[2].setup).toBe("pip install unsloth");
175
- (0, vitest_1.expect)(snippet[2].content).toBe('from unsloth import FastModel\nmodel, tokenizer = FastModel.from_pretrained(\n model_name="some-user/my-unsloth-finetune",\n max_seq_length=2048,\n)');
170
+ (0, vitest_1.expect)(snippet[0].setup).toBe("curl -fsSL https://unsloth.ai/install.sh | sh");
171
+ (0, vitest_1.expect)(snippet[0].content).toBe("# Run unsloth studio\nunsloth studio -H 0.0.0.0 -p 8888\n# Then open http://localhost:8888 in your browser\n# Search for some-user/my-unsloth-finetune to start chatting");
172
+ (0, vitest_1.expect)(snippet[1].setup).toBe("irm https://unsloth.ai/install.ps1 | iex");
173
+ (0, vitest_1.expect)(snippet[1].content).toBe(snippet[0].content);
174
+ (0, vitest_1.expect)(snippet[2].setup).toBe("# No setup required");
175
+ (0, vitest_1.expect)(snippet[2].content).toBe("# Open https://huggingface.co/spaces/unsloth/studio in your browser\n# Search for some-user/my-unsloth-finetune to start chatting");
176
+ (0, vitest_1.expect)(snippet[3].setup).toBe("pip install unsloth");
177
+ (0, vitest_1.expect)(snippet[3].content).toBe('from unsloth import FastModel\nmodel, tokenizer = FastModel.from_pretrained(\n model_name="some-user/my-unsloth-finetune",\n max_seq_length=2048,\n)');
176
178
  });
177
179
  (0, vitest_1.it)("unsloth namespace gguf model", async () => {
178
180
  const { displayOnModelPage, snippet: snippetFunc } = local_apps_js_1.LOCAL_APPS.unsloth;
@@ -184,11 +186,13 @@ curl -X POST "http://localhost:8000/v1/chat/completions" \\
184
186
  };
185
187
  (0, vitest_1.expect)(displayOnModelPage(model)).toBe(true);
186
188
  const snippet = snippetFunc(model);
187
- (0, vitest_1.expect)(snippet[0].setup).toBe("pip install unsloth\nunsloth studio setup");
188
- (0, vitest_1.expect)(snippet[0].content).toBe("# Run unsloth studio\nunsloth studio -H 0.0.0.0 -p 8000\n# Then open http://localhost:8000/chat in your browser\n# Search for unsloth/Llama-3.2-3B-Instruct-GGUF to start chatting");
189
- (0, vitest_1.expect)(snippet[1].setup).toBe("# No setup required");
190
- (0, vitest_1.expect)(snippet[1].content).toBe("# Open https://huggingface.co/spaces/unsloth/studio in your browser\n# Search for unsloth/Llama-3.2-3B-Instruct-GGUF to start chatting");
191
- (0, vitest_1.expect)(snippet).toHaveLength(2); // GGUF models only get 2 snippets
189
+ (0, vitest_1.expect)(snippet[0].setup).toBe("curl -fsSL https://unsloth.ai/install.sh | sh");
190
+ (0, vitest_1.expect)(snippet[0].content).toBe("# Run unsloth studio\nunsloth studio -H 0.0.0.0 -p 8888\n# Then open http://localhost:8888 in your browser\n# Search for unsloth/Llama-3.2-3B-Instruct-GGUF to start chatting");
191
+ (0, vitest_1.expect)(snippet[1].setup).toBe("irm https://unsloth.ai/install.ps1 | iex");
192
+ (0, vitest_1.expect)(snippet[1].content).toBe(snippet[0].content);
193
+ (0, vitest_1.expect)(snippet[2].setup).toBe("# No setup required");
194
+ (0, vitest_1.expect)(snippet[2].content).toBe("# Open https://huggingface.co/spaces/unsloth/studio in your browser\n# Search for unsloth/Llama-3.2-3B-Instruct-GGUF to start chatting");
195
+ (0, vitest_1.expect)(snippet).toHaveLength(3); // GGUF models only get 3 snippets
192
196
  });
193
197
  (0, vitest_1.it)("non unsloth namespace gguf model", async () => {
194
198
  const { displayOnModelPage } = local_apps_js_1.LOCAL_APPS.unsloth;
@@ -32,6 +32,11 @@ export declare const EVALUATION_FRAMEWORKS: {
32
32
  readonly description: "Archipelago is a system for running and evaluating AI agents against MCP applications.";
33
33
  readonly url: "https://github.com/Mercor-Intelligence/archipelago";
34
34
  };
35
+ readonly "apex-evals": {
36
+ readonly name: "apex-evals";
37
+ readonly description: "APEX Evals is a benchmark suite and evaluation harness for evaluating large language models.";
38
+ readonly url: "https://github.com/Mercor-Intelligence/apex-evals";
39
+ };
35
40
  readonly "screenspot-pro": {
36
41
  readonly name: "screenspot-pro";
37
42
  readonly description: "ScreenSpot-Pro is a GUI grounding benchmark designed to evaluate how well AI agents can locate and identify UI elements across professional software applications in high-resolution screenshots, covering 1,585 annotated images from 26 professional tools.";
@@ -1 +1 @@
1
- {"version":3,"file":"eval.d.ts","sourceRoot":"","sources":["../../src/eval.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiExB,CAAC"}
1
+ {"version":3,"file":"eval.d.ts","sourceRoot":"","sources":["../../src/eval.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsExB,CAAC"}
package/dist/esm/eval.js CHANGED
@@ -32,6 +32,11 @@ export const EVALUATION_FRAMEWORKS = {
32
32
  description: "Archipelago is a system for running and evaluating AI agents against MCP applications.",
33
33
  url: "https://github.com/Mercor-Intelligence/archipelago",
34
34
  },
35
+ "apex-evals": {
36
+ name: "apex-evals",
37
+ description: "APEX Evals is a benchmark suite and evaluation harness for evaluating large language models.",
38
+ url: "https://github.com/Mercor-Intelligence/apex-evals",
39
+ },
35
40
  "screenspot-pro": {
36
41
  name: "screenspot-pro",
37
42
  description: "ScreenSpot-Pro is a GUI grounding benchmark designed to evaluate how well AI agents can locate and identify UI elements across professional software applications in high-resolution screenshots, covering 1,585 annotated images from 26 professional tools.",
@@ -1 +1 @@
1
- {"version":3,"file":"hardware-nvidia.d.ts","sourceRoot":"","sources":["../../src/hardware-nvidia.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD,MAAM,WAAW,kBAAmB,SAAQ,YAAY;IACvD;;;;OAIG;IACH,iBAAiB,EAAE,MAAM,CAAC;CAC1B;AAED,oBAAY,yBAAyB;IACpC,eAAe,OAAO;IACtB,aAAa,KAAO;IACpB,SAAS,KAAO;IAChB,MAAM,IAAM;IACZ,YAAY,MAAM;IAClB,IAAI,MAAM;IACV,UAAU,MAAM;IAChB,MAAM,IAAM;IACZ,MAAM,MAAM;IACZ,MAAM,MAAM;IACZ,KAAK,IAAM;IACX,YAAY,MAAM;IAClB,MAAM,MAAM;IACZ,iBAAiB,IAAM;IACvB,OAAO,MAAM;CACb;AAED,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CA8gB1D,CAAC"}
1
+ {"version":3,"file":"hardware-nvidia.d.ts","sourceRoot":"","sources":["../../src/hardware-nvidia.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD,MAAM,WAAW,kBAAmB,SAAQ,YAAY;IACvD;;;;OAIG;IACH,iBAAiB,EAAE,MAAM,CAAC;CAC1B;AAED,oBAAY,yBAAyB;IACpC,eAAe,OAAO;IACtB,aAAa,KAAO;IACpB,SAAS,KAAO;IAChB,MAAM,IAAM;IACZ,YAAY,MAAM;IAClB,IAAI,MAAM;IACV,UAAU,MAAM;IAChB,MAAM,IAAM;IACZ,MAAM,MAAM;IACZ,MAAM,MAAM;IACZ,KAAK,IAAM;IACX,YAAY,MAAM;IAClB,MAAM,MAAM;IACZ,iBAAiB,IAAM;IACvB,OAAO,MAAM;CACb;AAED,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAwhB1D,CAAC"}
@@ -183,7 +183,7 @@ export const NVIDIA_SKUS = {
183
183
  computeCapability: 8.6,
184
184
  },
185
185
  A2: {
186
- tflops: 4.531, // source: https://www.techpowerup.com/gpu-specs/a2.c3848
186
+ tflops: 4.531,
187
187
  memory: [16],
188
188
  computeCapability: 8.6,
189
189
  },
@@ -208,7 +208,7 @@ export const NVIDIA_SKUS = {
208
208
  computeCapability: 12.0,
209
209
  },
210
210
  "RTX 5080 Mobile": {
211
- tflops: 24.58,
211
+ tflops: 23.04,
212
212
  memory: [16],
213
213
  computeCapability: 12.0,
214
214
  },
@@ -218,7 +218,7 @@ export const NVIDIA_SKUS = {
218
218
  computeCapability: 12.0,
219
219
  },
220
220
  "RTX 5070 Mobile": {
221
- tflops: 23.22,
221
+ tflops: 13.13,
222
222
  memory: [8],
223
223
  computeCapability: 12.0,
224
224
  },
@@ -227,13 +227,23 @@ export const NVIDIA_SKUS = {
227
227
  memory: [16],
228
228
  computeCapability: 12.0,
229
229
  },
230
+ "RTX 5070 Ti Mobile": {
231
+ tflops: 17.04,
232
+ memory: [12],
233
+ computeCapability: 12.0,
234
+ },
230
235
  "RTX 5060 Ti": {
231
- tflops: 23.7, // source https://www.techpowerup.com/gpu-specs/geforce-rtx-5060-ti.c4246
236
+ tflops: 23.7,
232
237
  memory: [16, 8],
233
238
  computeCapability: 12.0,
234
239
  },
235
240
  "RTX 5060": {
236
- tflops: 19.18, // source https://www.techpowerup.com/gpu-specs/geforce-rtx-5060.c4219
241
+ tflops: 19.18,
242
+ memory: [8],
243
+ computeCapability: 12.0,
244
+ },
245
+ "RTX 5060 Mobile": {
246
+ tflops: 9.684,
237
247
  memory: [8],
238
248
  computeCapability: 12.0,
239
249
  },
@@ -1 +1 @@
1
- {"version":3,"file":"local-apps.d.ts","sourceRoot":"","sources":["../../src/local-apps.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAKnD,MAAM,WAAW,eAAe;IAC/B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG;IACtB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,QAAQ,EAAE,YAAY,CAAC;IACvB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;OAEG;IACH,kBAAkB,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OAAO,CAAC;CAClD,GAAG,CACD;IACA;;OAEG;IACH,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,GAAG,CAAC;CACtD,GACD;IACA;;;;OAIG;IACH,OAAO,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,MAAM,GAAG,MAAM,EAAE,GAAG,eAAe,GAAG,eAAe,EAAE,CAAC;CACzG,CACH,CAAC;AAsBF,iBAAS,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAE7C;AAED,iBAAS,mBAAmB,CAAC,KAAK,EAAE,SAAS,WAE5C;AAED,iBAAS,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAU9C;AAED,iBAAS,wBAAwB,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAE3D;AA0BD,iBAAS,cAAc,CAAC,KAAK,EAAE,SAAS,WAEvC;AA6ZD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,UAAU;;;;;;yBA3ZS,SAAS,aAAa,MAAM,KAAG,eAAe,EAAE;;;;;;;yBAiDzC,SAAS,aAAa,MAAM,KAAG,eAAe,EAAE;;;;;;;yBAmF3D,SAAS,KAAG,eAAe,EAAE;;;;;;oCAiT3B,SAAS;yBA3PT,SAAS,KAAG,eAAe,EAAE;;;;;;;yBAoF9B,SAAS,KAAG,eAAe,EAAE;;;;;;;yBA7B/B,SAAS,KAAG,eAAe,EAAE;;;;;;;;;;;;;;yBApIzB,SAAS,aAAa,MAAM,KAAG,eAAe,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBA9CjD,SAAS,aAAa,MAAM,KAAG,MAAM;;;;;;;yBAIpC,SAAS,KAAG,eAAe,EAAE;;;;;;;yBA6RnB,SAAS,aAAa,MAAM,KAAG,MAAM;;;;;;;yBAM9C,SAAS,aAAa,MAAM,KAAG,eAAe,EAAE;;;;;;;yBArDtD,SAAS,aAAa,MAAM,KAAG,eAAe,EAAE;;CAuStC,CAAC;AAErC,MAAM,MAAM,WAAW,GAAG,MAAM,OAAO,UAAU,CAAC"}
1
+ {"version":3,"file":"local-apps.d.ts","sourceRoot":"","sources":["../../src/local-apps.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAKnD,MAAM,WAAW,eAAe;IAC/B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG;IACtB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,QAAQ,EAAE,YAAY,CAAC;IACvB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;OAEG;IACH,kBAAkB,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OAAO,CAAC;CAClD,GAAG,CACD;IACA;;OAEG;IACH,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,GAAG,CAAC;CACtD,GACD;IACA;;;;OAIG;IACH,OAAO,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,MAAM,GAAG,MAAM,EAAE,GAAG,eAAe,GAAG,eAAe,EAAE,CAAC;CACzG,CACH,CAAC;AAsBF,iBAAS,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAE7C;AAED,iBAAS,mBAAmB,CAAC,KAAK,EAAE,SAAS,WAE5C;AAED,iBAAS,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAU9C;AAED,iBAAS,wBAAwB,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAE3D;AA0BD,iBAAS,cAAc,CAAC,KAAK,EAAE,SAAS,WAEvC;AAqaD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,UAAU;;;;;;yBAnaS,SAAS,aAAa,MAAM,KAAG,eAAe,EAAE;;;;;;;yBAiDzC,SAAS,aAAa,MAAM,KAAG,eAAe,EAAE;;;;;;;yBA2F3D,SAAS,KAAG,eAAe,EAAE;;;;;;oCAiT3B,SAAS;yBA3PT,SAAS,KAAG,eAAe,EAAE;;;;;;;yBAoF9B,SAAS,KAAG,eAAe,EAAE;;;;;;;yBA7B/B,SAAS,KAAG,eAAe,EAAE;;;;;;;;;;;;;;yBApIzB,SAAS,aAAa,MAAM,KAAG,eAAe,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBAtDjD,SAAS,aAAa,MAAM,KAAG,MAAM;;;;;;;yBAIpC,SAAS,KAAG,eAAe,EAAE;;;;;;;yBAqSnB,SAAS,aAAa,MAAM,KAAG,MAAM;;;;;;;yBAM9C,SAAS,aAAa,MAAM,KAAG,eAAe,EAAE;;;;;;;yBArDtD,SAAS,aAAa,MAAM,KAAG,eAAe,EAAE;;CAuStC,CAAC;AAErC,MAAM,MAAM,WAAW,GAAG,MAAM,OAAO,UAAU,CAAC"}
@@ -131,15 +131,21 @@ const snippetOllama = (model, filepath) => {
131
131
  };
132
132
  const snippetUnsloth = (model) => {
133
133
  const isGguf = isLlamaCppGgufModel(model);
134
+ const studio_content = [
135
+ "# Run unsloth studio",
136
+ "unsloth studio -H 0.0.0.0 -p 8888",
137
+ "# Then open http://localhost:8888 in your browser",
138
+ "# Search for " + model.id + " to start chatting",
139
+ ].join("\n");
134
140
  const studio_instructions = {
135
- title: "Open model in Unsloth Studio",
136
- setup: ["pip install unsloth", "unsloth studio setup"].join("\n"),
137
- content: [
138
- "# Run unsloth studio",
139
- "unsloth studio -H 0.0.0.0 -p 8000",
140
- "# Then open http://localhost:8000/chat in your browser",
141
- "# Search for " + model.id + " to start chatting",
142
- ].join("\n"),
141
+ title: "Install Unsloth Studio (macOS, Linux, WSL)",
142
+ setup: "curl -fsSL https://unsloth.ai/install.sh | sh",
143
+ content: studio_content,
144
+ };
145
+ const studio_instructions_windows = {
146
+ title: "Install Unsloth Studio (Windows)",
147
+ setup: "irm https://unsloth.ai/install.ps1 | iex",
148
+ content: studio_content,
143
149
  };
144
150
  const hf_spaces_instructions = {
145
151
  title: "Using HuggingFace Spaces for Unsloth",
@@ -160,10 +166,10 @@ const snippetUnsloth = (model) => {
160
166
  ].join("\n"),
161
167
  };
162
168
  if (isGguf) {
163
- return [studio_instructions, hf_spaces_instructions];
169
+ return [studio_instructions, studio_instructions_windows, hf_spaces_instructions];
164
170
  }
165
171
  else {
166
- return [studio_instructions, hf_spaces_instructions, fastmodel_instructions];
172
+ return [studio_instructions, studio_instructions_windows, hf_spaces_instructions, fastmodel_instructions];
167
173
  }
168
174
  };
169
175
  const snippetLocalAI = (model, filepath) => {
@@ -165,12 +165,14 @@ curl -X POST "http://localhost:8000/v1/chat/completions" \\
165
165
  };
166
166
  expect(displayOnModelPage(model)).toBe(true);
167
167
  const snippet = snippetFunc(model);
168
- expect(snippet[0].setup).toBe("pip install unsloth\nunsloth studio setup");
169
- expect(snippet[0].content).toBe("# Run unsloth studio\nunsloth studio -H 0.0.0.0 -p 8000\n# Then open http://localhost:8000/chat in your browser\n# Search for some-user/my-unsloth-finetune to start chatting");
170
- expect(snippet[1].setup).toBe("# No setup required");
171
- expect(snippet[1].content).toBe("# Open https://huggingface.co/spaces/unsloth/studio in your browser\n# Search for some-user/my-unsloth-finetune to start chatting");
172
- expect(snippet[2].setup).toBe("pip install unsloth");
173
- expect(snippet[2].content).toBe('from unsloth import FastModel\nmodel, tokenizer = FastModel.from_pretrained(\n model_name="some-user/my-unsloth-finetune",\n max_seq_length=2048,\n)');
168
+ expect(snippet[0].setup).toBe("curl -fsSL https://unsloth.ai/install.sh | sh");
169
+ expect(snippet[0].content).toBe("# Run unsloth studio\nunsloth studio -H 0.0.0.0 -p 8888\n# Then open http://localhost:8888 in your browser\n# Search for some-user/my-unsloth-finetune to start chatting");
170
+ expect(snippet[1].setup).toBe("irm https://unsloth.ai/install.ps1 | iex");
171
+ expect(snippet[1].content).toBe(snippet[0].content);
172
+ expect(snippet[2].setup).toBe("# No setup required");
173
+ expect(snippet[2].content).toBe("# Open https://huggingface.co/spaces/unsloth/studio in your browser\n# Search for some-user/my-unsloth-finetune to start chatting");
174
+ expect(snippet[3].setup).toBe("pip install unsloth");
175
+ expect(snippet[3].content).toBe('from unsloth import FastModel\nmodel, tokenizer = FastModel.from_pretrained(\n model_name="some-user/my-unsloth-finetune",\n max_seq_length=2048,\n)');
174
176
  });
175
177
  it("unsloth namespace gguf model", async () => {
176
178
  const { displayOnModelPage, snippet: snippetFunc } = LOCAL_APPS.unsloth;
@@ -182,11 +184,13 @@ curl -X POST "http://localhost:8000/v1/chat/completions" \\
182
184
  };
183
185
  expect(displayOnModelPage(model)).toBe(true);
184
186
  const snippet = snippetFunc(model);
185
- expect(snippet[0].setup).toBe("pip install unsloth\nunsloth studio setup");
186
- expect(snippet[0].content).toBe("# Run unsloth studio\nunsloth studio -H 0.0.0.0 -p 8000\n# Then open http://localhost:8000/chat in your browser\n# Search for unsloth/Llama-3.2-3B-Instruct-GGUF to start chatting");
187
- expect(snippet[1].setup).toBe("# No setup required");
188
- expect(snippet[1].content).toBe("# Open https://huggingface.co/spaces/unsloth/studio in your browser\n# Search for unsloth/Llama-3.2-3B-Instruct-GGUF to start chatting");
189
- expect(snippet).toHaveLength(2); // GGUF models only get 2 snippets
187
+ expect(snippet[0].setup).toBe("curl -fsSL https://unsloth.ai/install.sh | sh");
188
+ expect(snippet[0].content).toBe("# Run unsloth studio\nunsloth studio -H 0.0.0.0 -p 8888\n# Then open http://localhost:8888 in your browser\n# Search for unsloth/Llama-3.2-3B-Instruct-GGUF to start chatting");
189
+ expect(snippet[1].setup).toBe("irm https://unsloth.ai/install.ps1 | iex");
190
+ expect(snippet[1].content).toBe(snippet[0].content);
191
+ expect(snippet[2].setup).toBe("# No setup required");
192
+ expect(snippet[2].content).toBe("# Open https://huggingface.co/spaces/unsloth/studio in your browser\n# Search for unsloth/Llama-3.2-3B-Instruct-GGUF to start chatting");
193
+ expect(snippet).toHaveLength(3); // GGUF models only get 3 snippets
190
194
  });
191
195
  it("non unsloth namespace gguf model", async () => {
192
196
  const { displayOnModelPage } = LOCAL_APPS.unsloth;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@huggingface/tasks",
3
- "version": "0.20.11",
3
+ "version": "0.20.12",
4
4
  "description": "List of ML tasks for huggingface.co/tasks",
5
5
  "keywords": [
6
6
  "hub",
package/src/eval.ts CHANGED
@@ -32,6 +32,11 @@ export const EVALUATION_FRAMEWORKS = {
32
32
  description: "Archipelago is a system for running and evaluating AI agents against MCP applications.",
33
33
  url: "https://github.com/Mercor-Intelligence/archipelago",
34
34
  },
35
+ "apex-evals": {
36
+ name: "apex-evals",
37
+ description: "APEX Evals is a benchmark suite and evaluation harness for evaluating large language models.",
38
+ url: "https://github.com/Mercor-Intelligence/apex-evals",
39
+ },
35
40
  "screenspot-pro": {
36
41
  name: "screenspot-pro",
37
42
  description:
@@ -194,7 +194,7 @@ export const NVIDIA_SKUS: Record<string, NvidiaHardwareSpec> = {
194
194
  computeCapability: 8.6,
195
195
  },
196
196
  A2: {
197
- tflops: 4.531, // source: https://www.techpowerup.com/gpu-specs/a2.c3848
197
+ tflops: 4.531,
198
198
  memory: [16],
199
199
  computeCapability: 8.6,
200
200
  },
@@ -219,7 +219,7 @@ export const NVIDIA_SKUS: Record<string, NvidiaHardwareSpec> = {
219
219
  computeCapability: 12.0,
220
220
  },
221
221
  "RTX 5080 Mobile": {
222
- tflops: 24.58,
222
+ tflops: 23.04,
223
223
  memory: [16],
224
224
  computeCapability: 12.0,
225
225
  },
@@ -229,7 +229,7 @@ export const NVIDIA_SKUS: Record<string, NvidiaHardwareSpec> = {
229
229
  computeCapability: 12.0,
230
230
  },
231
231
  "RTX 5070 Mobile": {
232
- tflops: 23.22,
232
+ tflops: 13.13,
233
233
  memory: [8],
234
234
  computeCapability: 12.0,
235
235
  },
@@ -238,13 +238,23 @@ export const NVIDIA_SKUS: Record<string, NvidiaHardwareSpec> = {
238
238
  memory: [16],
239
239
  computeCapability: 12.0,
240
240
  },
241
+ "RTX 5070 Ti Mobile": {
242
+ tflops: 17.04,
243
+ memory: [12],
244
+ computeCapability: 12.0,
245
+ },
241
246
  "RTX 5060 Ti": {
242
- tflops: 23.7, // source https://www.techpowerup.com/gpu-specs/geforce-rtx-5060-ti.c4246
247
+ tflops: 23.7,
243
248
  memory: [16, 8],
244
249
  computeCapability: 12.0,
245
250
  },
246
251
  "RTX 5060": {
247
- tflops: 19.18, // source https://www.techpowerup.com/gpu-specs/geforce-rtx-5060.c4219
252
+ tflops: 19.18,
253
+ memory: [8],
254
+ computeCapability: 12.0,
255
+ },
256
+ "RTX 5060 Mobile": {
257
+ tflops: 9.684,
248
258
  memory: [8],
249
259
  computeCapability: 12.0,
250
260
  },
@@ -184,16 +184,18 @@ curl -X POST "http://localhost:8000/v1/chat/completions" \\
184
184
 
185
185
  expect(displayOnModelPage(model)).toBe(true);
186
186
  const snippet = snippetFunc(model);
187
- expect(snippet[0].setup).toBe("pip install unsloth\nunsloth studio setup");
187
+ expect(snippet[0].setup).toBe("curl -fsSL https://unsloth.ai/install.sh | sh");
188
188
  expect(snippet[0].content).toBe(
189
- "# Run unsloth studio\nunsloth studio -H 0.0.0.0 -p 8000\n# Then open http://localhost:8000/chat in your browser\n# Search for some-user/my-unsloth-finetune to start chatting",
189
+ "# Run unsloth studio\nunsloth studio -H 0.0.0.0 -p 8888\n# Then open http://localhost:8888 in your browser\n# Search for some-user/my-unsloth-finetune to start chatting",
190
190
  );
191
- expect(snippet[1].setup).toBe("# No setup required");
192
- expect(snippet[1].content).toBe(
191
+ expect(snippet[1].setup).toBe("irm https://unsloth.ai/install.ps1 | iex");
192
+ expect(snippet[1].content).toBe(snippet[0].content);
193
+ expect(snippet[2].setup).toBe("# No setup required");
194
+ expect(snippet[2].content).toBe(
193
195
  "# Open https://huggingface.co/spaces/unsloth/studio in your browser\n# Search for some-user/my-unsloth-finetune to start chatting",
194
196
  );
195
- expect(snippet[2].setup).toBe("pip install unsloth");
196
- expect(snippet[2].content).toBe(
197
+ expect(snippet[3].setup).toBe("pip install unsloth");
198
+ expect(snippet[3].content).toBe(
197
199
  'from unsloth import FastModel\nmodel, tokenizer = FastModel.from_pretrained(\n model_name="some-user/my-unsloth-finetune",\n max_seq_length=2048,\n)',
198
200
  );
199
201
  });
@@ -209,15 +211,17 @@ curl -X POST "http://localhost:8000/v1/chat/completions" \\
209
211
 
210
212
  expect(displayOnModelPage(model)).toBe(true);
211
213
  const snippet = snippetFunc(model);
212
- expect(snippet[0].setup).toBe("pip install unsloth\nunsloth studio setup");
214
+ expect(snippet[0].setup).toBe("curl -fsSL https://unsloth.ai/install.sh | sh");
213
215
  expect(snippet[0].content).toBe(
214
- "# Run unsloth studio\nunsloth studio -H 0.0.0.0 -p 8000\n# Then open http://localhost:8000/chat in your browser\n# Search for unsloth/Llama-3.2-3B-Instruct-GGUF to start chatting",
216
+ "# Run unsloth studio\nunsloth studio -H 0.0.0.0 -p 8888\n# Then open http://localhost:8888 in your browser\n# Search for unsloth/Llama-3.2-3B-Instruct-GGUF to start chatting",
215
217
  );
216
- expect(snippet[1].setup).toBe("# No setup required");
217
- expect(snippet[1].content).toBe(
218
+ expect(snippet[1].setup).toBe("irm https://unsloth.ai/install.ps1 | iex");
219
+ expect(snippet[1].content).toBe(snippet[0].content);
220
+ expect(snippet[2].setup).toBe("# No setup required");
221
+ expect(snippet[2].content).toBe(
218
222
  "# Open https://huggingface.co/spaces/unsloth/studio in your browser\n# Search for unsloth/Llama-3.2-3B-Instruct-GGUF to start chatting",
219
223
  );
220
- expect(snippet).toHaveLength(2); // GGUF models only get 2 snippets
224
+ expect(snippet).toHaveLength(3); // GGUF models only get 3 snippets
221
225
  });
222
226
 
223
227
  it("non unsloth namespace gguf model", async () => {
package/src/local-apps.ts CHANGED
@@ -216,15 +216,23 @@ const snippetOllama = (model: ModelData, filepath?: string): string => {
216
216
  const snippetUnsloth = (model: ModelData): LocalAppSnippet[] => {
217
217
  const isGguf = isLlamaCppGgufModel(model);
218
218
 
219
+ const studio_content = [
220
+ "# Run unsloth studio",
221
+ "unsloth studio -H 0.0.0.0 -p 8888",
222
+ "# Then open http://localhost:8888 in your browser",
223
+ "# Search for " + model.id + " to start chatting",
224
+ ].join("\n");
225
+
219
226
  const studio_instructions: LocalAppSnippet = {
220
- title: "Open model in Unsloth Studio",
221
- setup: ["pip install unsloth", "unsloth studio setup"].join("\n"),
222
- content: [
223
- "# Run unsloth studio",
224
- "unsloth studio -H 0.0.0.0 -p 8000",
225
- "# Then open http://localhost:8000/chat in your browser",
226
- "# Search for " + model.id + " to start chatting",
227
- ].join("\n"),
227
+ title: "Install Unsloth Studio (macOS, Linux, WSL)",
228
+ setup: "curl -fsSL https://unsloth.ai/install.sh | sh",
229
+ content: studio_content,
230
+ };
231
+
232
+ const studio_instructions_windows: LocalAppSnippet = {
233
+ title: "Install Unsloth Studio (Windows)",
234
+ setup: "irm https://unsloth.ai/install.ps1 | iex",
235
+ content: studio_content,
228
236
  };
229
237
 
230
238
  const hf_spaces_instructions: LocalAppSnippet = {
@@ -249,9 +257,9 @@ const snippetUnsloth = (model: ModelData): LocalAppSnippet[] => {
249
257
  };
250
258
 
251
259
  if (isGguf) {
252
- return [studio_instructions, hf_spaces_instructions];
260
+ return [studio_instructions, studio_instructions_windows, hf_spaces_instructions];
253
261
  } else {
254
- return [studio_instructions, hf_spaces_instructions, fastmodel_instructions];
262
+ return [studio_instructions, studio_instructions_windows, hf_spaces_instructions, fastmodel_instructions];
255
263
  }
256
264
  };
257
265