web-llm-runner 0.1.9 → 0.1.10

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.
package/lib/index.js CHANGED
@@ -986,7 +986,7 @@ const prebuiltAppConfig = {
986
986
  modelVersion +
987
987
  "/Llama-3.2-1B-Instruct-q4f32_1-ctx4k_cs1k-webgpu.wasm",
988
988
  vram_required_MB: 1128.82,
989
- low_resource_required: true,
989
+ low_resource_required: false,
990
990
  overrides: {
991
991
  context_window_size: 4096,
992
992
  },
@@ -998,7 +998,7 @@ const prebuiltAppConfig = {
998
998
  modelVersion +
999
999
  "/Llama-3.2-1B-Instruct-q4f16_1-ctx4k_cs1k-webgpu.wasm",
1000
1000
  vram_required_MB: 879.04,
1001
- low_resource_required: true,
1001
+ low_resource_required: false,
1002
1002
  overrides: {
1003
1003
  context_window_size: 4096,
1004
1004
  },
@@ -1024,7 +1024,7 @@ const prebuiltAppConfig = {
1024
1024
  modelVersion +
1025
1025
  "/Llama-3.2-1B-Instruct-q0f16-ctx4k_cs1k-webgpu.wasm",
1026
1026
  vram_required_MB: 2573.13,
1027
- low_resource_required: true,
1027
+ low_resource_required: false,
1028
1028
  overrides: {
1029
1029
  context_window_size: 4096,
1030
1030
  },
@@ -1036,7 +1036,7 @@ const prebuiltAppConfig = {
1036
1036
  modelVersion +
1037
1037
  "/Llama-3.2-3B-Instruct-q4f32_1-ctx4k_cs1k-webgpu.wasm",
1038
1038
  vram_required_MB: 2951.51,
1039
- low_resource_required: true,
1039
+ low_resource_required: false,
1040
1040
  overrides: {
1041
1041
  context_window_size: 4096,
1042
1042
  },
@@ -1048,7 +1048,7 @@ const prebuiltAppConfig = {
1048
1048
  modelVersion +
1049
1049
  "/Llama-3.2-3B-Instruct-q4f16_1-ctx4k_cs1k-webgpu.wasm",
1050
1050
  vram_required_MB: 2263.69,
1051
- low_resource_required: true,
1051
+ low_resource_required: false,
1052
1052
  overrides: {
1053
1053
  context_window_size: 4096,
1054
1054
  },
@@ -1483,7 +1483,7 @@ const prebuiltAppConfig = {
1483
1483
  modelVersion +
1484
1484
  "/SmolLM2-360M-Instruct-q0f16-ctx4k_cs1k-webgpu.wasm",
1485
1485
  vram_required_MB: 871.99,
1486
- low_resource_required: true,
1486
+ low_resource_required: false,
1487
1487
  required_features: ["shader-f16"],
1488
1488
  overrides: {
1489
1489
  context_window_size: 4096,
@@ -1496,7 +1496,7 @@ const prebuiltAppConfig = {
1496
1496
  modelVersion +
1497
1497
  "/SmolLM2-360M-Instruct-q0f32-ctx4k_cs1k-webgpu.wasm",
1498
1498
  vram_required_MB: 1743.99,
1499
- low_resource_required: true,
1499
+ low_resource_required: false,
1500
1500
  overrides: {
1501
1501
  context_window_size: 4096,
1502
1502
  },
@@ -1508,7 +1508,7 @@ const prebuiltAppConfig = {
1508
1508
  modelVersion +
1509
1509
  "/SmolLM2-360M-Instruct-q4f16_1-ctx4k_cs1k-webgpu.wasm",
1510
1510
  vram_required_MB: 376.06,
1511
- low_resource_required: true,
1511
+ low_resource_required: false,
1512
1512
  required_features: ["shader-f16"],
1513
1513
  overrides: {
1514
1514
  context_window_size: 4096,
@@ -1521,7 +1521,7 @@ const prebuiltAppConfig = {
1521
1521
  modelVersion +
1522
1522
  "/SmolLM2-360M-Instruct-q4f32_1-ctx4k_cs1k-webgpu.wasm",
1523
1523
  vram_required_MB: 579.61,
1524
- low_resource_required: true,
1524
+ low_resource_required: false,
1525
1525
  overrides: {
1526
1526
  context_window_size: 4096,
1527
1527
  },
@@ -1533,7 +1533,7 @@ const prebuiltAppConfig = {
1533
1533
  modelVersion +
1534
1534
  "/SmolLM2-135M-Instruct-q0f16-ctx4k_cs1k-webgpu.wasm",
1535
1535
  vram_required_MB: 359.69,
1536
- low_resource_required: true,
1536
+ low_resource_required: false,
1537
1537
  required_features: ["shader-f16"],
1538
1538
  overrides: {
1539
1539
  context_window_size: 4096,
@@ -1546,7 +1546,7 @@ const prebuiltAppConfig = {
1546
1546
  modelVersion +
1547
1547
  "/SmolLM2-135M-Instruct-q0f32-ctx4k_cs1k-webgpu.wasm",
1548
1548
  vram_required_MB: 719.38,
1549
- low_resource_required: true,
1549
+ low_resource_required: false,
1550
1550
  overrides: {
1551
1551
  context_window_size: 4096,
1552
1552
  },
@@ -37983,13 +37983,29 @@ class WebLLM {
37983
37983
  messages = [];
37984
37984
  downloadProgress = {};
37985
37985
  config;
37986
+ isLowResourceDevice = false;
37986
37987
  constructor(config = {}) {
37987
37988
  this.config = config;
37988
37989
  this.messages = this.loadContext();
37990
+ this.detectDevice();
37991
+ }
37992
+ detectDevice() {
37993
+ if (typeof navigator === "undefined")
37994
+ return;
37995
+ const isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
37996
+ const hasWebGPU = !!navigator.gpu;
37997
+ // If it's mobile OR if WebGPU is missing, we consider it a low-resource/fallback device
37998
+ this.isLowResourceDevice = isMobile || !hasWebGPU;
37999
+ console.log(`[WebLLM] Device detection: isMobile=${isMobile}, hasWebGPU=${hasWebGPU} -> isLowResourceDevice=${this.isLowResourceDevice}`);
37989
38000
  }
37990
38001
  // manage_model endpoints
37991
38002
  get models_available() {
37992
- return prebuiltAppConfig.model_list.map((m) => m.model_id);
38003
+ let list = prebuiltAppConfig.model_list;
38004
+ if (this.isLowResourceDevice) {
38005
+ // Filter for low resource models (mostly ONNX/lightweight ones)
38006
+ list = list.filter(m => m.low_resource_required === true);
38007
+ }
38008
+ return list.map((m) => m.model_id);
37993
38009
  }
37994
38010
  async local_model_available(model_id) {
37995
38011
  return await hasModelInCache(model_id);