e-hossam96 commited on
Commit
e17517b
·
1 Parent(s): c14885b

changed classifier model

Browse files
Files changed (6) hide show
  1. Dockerfile +6 -6
  2. README.md +2 -2
  3. main.py +1 -1
  4. pyproject.toml +2 -2
  5. static/index.html +15 -6
  6. uv.lock +29 -27
Dockerfile CHANGED
@@ -31,13 +31,13 @@ ENV PATH="/app/.venv/bin:$PATH"
31
  RUN optimum-cli export onnx \
32
  --opset 14 --task text-classification \
33
  --framework pt --dtype fp32 --device cpu \
34
- --model climatebert/distilroberta-base-climate-sentiment \
35
- distilroberta-base-climate-sentiment-onnx
36
 
37
  # model quantization
38
  RUN optimum-cli onnxruntime quantize --avx512_vnni --per_channel \
39
- --onnx_model distilroberta-base-climate-sentiment-onnx \
40
- -o distilroberta-base-climate-sentiment-onnx-quantized
41
 
42
  # ------------------------------------------------------- #
43
 
@@ -55,8 +55,8 @@ WORKDIR /app
55
 
56
  # copy env files from base to main image
57
  COPY --from=base /app/.venv ./.venv
58
- COPY --from=base /app/distilroberta-base-climate-sentiment-onnx-quantized \
59
- ./distilroberta-base-climate-sentiment-onnx-quantized
60
 
61
  # add app env var to path
62
  ENV PATH="/app/.venv/bin:$PATH"
 
31
  RUN optimum-cli export onnx \
32
  --opset 14 --task text-classification \
33
  --framework pt --dtype fp32 --device cpu \
34
+ --model mrm8488/bert-tiny-finetuned-sms-spam-detection \
35
+ bert-tiny-finetuned-sms-spam-detection-onnx
36
 
37
  # model quantization
38
  RUN optimum-cli onnxruntime quantize --avx512_vnni --per_channel \
39
+ --onnx_model bert-tiny-finetuned-sms-spam-detection-onnx \
40
+ -o bert-tiny-finetuned-sms-spam-detection-onnx-quantized
41
 
42
  # ------------------------------------------------------- #
43
 
 
55
 
56
  # copy env files from base to main image
57
  COPY --from=base /app/.venv ./.venv
58
+ COPY --from=base /app/bert-tiny-finetuned-sms-spam-detection-onnx-quantized \
59
+ ./bert-tiny-finetuned-sms-spam-detection-onnx-quantized
60
 
61
  # add app env var to path
62
  ENV PATH="/app/.venv/bin:$PATH"
README.md CHANGED
@@ -1,5 +1,5 @@
1
  ---
2
- title: Climate Sentiment Classification
3
  emoji: 📚
4
  colorFrom: blue
5
  colorTo: gray
@@ -7,5 +7,5 @@ sdk: docker
7
  app_port: 7860
8
  pinned: false
9
  license: mit
10
- short_description: Optimized Climate Sentiment Classification Pipeline
11
  ---
 
1
  ---
2
+ title: SMS Spam Classification
3
  emoji: 📚
4
  colorFrom: blue
5
  colorTo: gray
 
7
  app_port: 7860
8
  pinned: false
9
  license: mit
10
+ short_description: Optimized SMS Spam Classification Pipeline
11
  ---
main.py CHANGED
@@ -19,7 +19,7 @@ from optimum.onnxruntime import ORTModelForSequenceClassification
19
  # ----------------------------- #
20
  transformers.set_seed(42)
21
 
22
- MODEL_NAME = "distilroberta-base-climate-sentiment-onnx-quantized"
23
  BATCH_PROCESS_INTERVAL = 0.05
24
  MAX_BATCH_SIZE = 16
25
 
 
19
  # ----------------------------- #
20
  transformers.set_seed(42)
21
 
22
+ MODEL_NAME = "bert-tiny-finetuned-sms-spam-detection-onnx-quantized"
23
  BATCH_PROCESS_INTERVAL = 0.05
24
  MAX_BATCH_SIZE = 16
25
 
pyproject.toml CHANGED
@@ -1,7 +1,7 @@
1
  [project]
2
- name = "climate-sentiment-classification"
3
  version = "0.1.0"
4
- description = "Optimized Climate Sentiment Classification Pipeline"
5
  readme = "README.md"
6
  authors = [
7
  { name = "e-hossam96", email = "ehh.hossam@gmail.com" }
 
1
  [project]
2
+ name = "sms-spam-classification"
3
  version = "0.1.0"
4
+ description = "Optimized SMS Spam Classification Pipeline"
5
  readme = "README.md"
6
  authors = [
7
  { name = "e-hossam96", email = "ehh.hossam@gmail.com" }
static/index.html CHANGED
@@ -37,11 +37,12 @@
37
  <body>
38
  <div class="container text-center">
39
  <div class="card p-4 shadow-lg">
40
- <h2 class="mb-3">Climate Sentiment Classifier</h2>
41
- <p class="mb-4">An optimized sentiment classifier to classify climate-related sentiment in climate-related
42
- paragraphs hosted from <a href="https://huggingface.co/climatebert" target="_blank">ClimateBERT</a></p>
43
- <input id="sentenceInput" type="text" class="form-control mb-3" placeholder="Enter your sentence here"
44
- value="We emitted 13.4 million tonnes CO2 of Scope 2 (indirect emissions), being emissions arising from our consumption of purchased electricity, steam or heat." />
 
45
  <button class="btn btn-primary w-100" onclick="classifySentence()">Classify</button>
46
  <div class="loader" id="loader" style="display:none;">
47
  <div class="spinner-border text-primary" role="status">
@@ -76,9 +77,16 @@
76
  const endTime = performance.now(); // End timing
77
  const elapsed = (endTime - startTime).toFixed(2);
78
 
 
 
 
 
 
 
 
79
  // Display label and score in bold, plus elapsed time
80
  resultDiv.innerHTML =
81
- `Label: <b>${data.result.label.toUpperCase()}</b> -- ` +
82
  `Score: <b>${data.result.score.toFixed(3)}</b> -- ` +
83
  `Response Time: <b>${elapsed} ms</b>`;
84
  } catch (err) {
@@ -96,6 +104,7 @@
96
  }
97
  });
98
  </script>
 
99
  </body>
100
 
101
 
 
37
  <body>
38
  <div class="container text-center">
39
  <div class="card p-4 shadow-lg">
40
+ <h2 class="mb-3">SMS Spam Classifier</h2>
41
+ <p class="mb-4">An optimized sms spam classifier from <a
42
+ href="https://huggingface.co/mrm8488/bert-tiny-finetuned-sms-spam-detection" target="_blank">BERT
43
+ Tiny SMS Spam Detector</a></p>
44
+ <input id="sentenceInput" type="text" class="form-control mb-3" placeholder="Enter your sms text here ..."
45
+ value="FreeMsg Hey there darling it's been 3 week's now and no word back! I'd like some fun you up for it still? Tb ok! XxX std chgs to send, £1.50 to rcv" />
46
  <button class="btn btn-primary w-100" onclick="classifySentence()">Classify</button>
47
  <div class="loader" id="loader" style="display:none;">
48
  <div class="spinner-border text-primary" role="status">
 
77
  const endTime = performance.now(); // End timing
78
  const elapsed = (endTime - startTime).toFixed(2);
79
 
80
+ // Map model labels to custom labels
81
+ const labelMap = {
82
+ "LABEL_0": "SPAM",
83
+ "LABEL_1": "HAM"
84
+ };
85
+ const mappedLabel = labelMap[data.result.label] || data.result.label;
86
+
87
  // Display label and score in bold, plus elapsed time
88
  resultDiv.innerHTML =
89
+ `Label: <b>${mappedLabel}</b> -- ` +
90
  `Score: <b>${data.result.score.toFixed(3)}</b> -- ` +
91
  `Response Time: <b>${elapsed} ms</b>`;
92
  } catch (err) {
 
104
  }
105
  });
106
  </script>
107
+
108
  </body>
109
 
110
 
uv.lock CHANGED
@@ -183,30 +183,6 @@ wheels = [
183
  { url = "https://files.pythonhosted.org/packages/a2/58/1f37bf81e3c689cc74ffa42102fa8915b59085f54a6e4a80bc6265c0f6bf/click-8.2.0-py3-none-any.whl", hash = "sha256:6b303f0b2aa85f1cb4e5303078fadcbcd4e476f114fab9b5007005711839325c", size = 102156, upload-time = "2025-05-10T22:21:01.352Z" },
184
  ]
185
 
186
- [[package]]
187
- name = "climate-sentiment-classification"
188
- version = "0.1.0"
189
- source = { virtual = "." }
190
- dependencies = [
191
- { name = "accelerate" },
192
- { name = "fastapi" },
193
- { name = "optimum", extra = ["onnxruntime"] },
194
- { name = "torch", version = "2.7.0", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform == 'darwin'" },
195
- { name = "torch", version = "2.7.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin'" },
196
- { name = "transformers" },
197
- { name = "uvicorn", extra = ["standard"] },
198
- ]
199
-
200
- [package.metadata]
201
- requires-dist = [
202
- { name = "accelerate", specifier = ">=1.6.0" },
203
- { name = "fastapi", specifier = ">=0.115.12" },
204
- { name = "optimum", extras = ["onnxruntime"], specifier = "==1.24.0" },
205
- { name = "torch", specifier = ">=2.7.0", index = "https://download.pytorch.org/whl/cpu" },
206
- { name = "transformers", specifier = "<4.49.0" },
207
- { name = "uvicorn", extras = ["standard"], specifier = ">=0.34.2" },
208
- ]
209
-
210
  [[package]]
211
  name = "colorama"
212
  version = "0.4.6"
@@ -690,9 +666,11 @@ wheels = [
690
  { url = "https://files.pythonhosted.org/packages/4d/de/9162872c6e502e9ac8c99a98a8738b2fab408123d11de55022ac4f92562a/onnxruntime-1.22.0-cp312-cp312-macosx_13_0_universal2.whl", hash = "sha256:f3c0380f53c1e72a41b3f4d6af2ccc01df2c17844072233442c3a7e74851ab97", size = 34298046, upload-time = "2025-05-09T20:26:02.399Z" },
691
  { url = "https://files.pythonhosted.org/packages/03/79/36f910cd9fc96b444b0e728bba14607016079786adf032dae61f7c63b4aa/onnxruntime-1.22.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c8601128eaef79b636152aea76ae6981b7c9fc81a618f584c15d78d42b310f1c", size = 14443220, upload-time = "2025-05-09T20:25:47.078Z" },
692
  { url = "https://files.pythonhosted.org/packages/8c/60/16d219b8868cc8e8e51a68519873bdb9f5f24af080b62e917a13fff9989b/onnxruntime-1.22.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6964a975731afc19dc3418fad8d4e08c48920144ff590149429a5ebe0d15fb3c", size = 16406377, upload-time = "2025-05-09T20:26:14.478Z" },
 
693
  { url = "https://files.pythonhosted.org/packages/a9/65/5cb5018d5b0b7cba820d2c4a1d1b02d40df538d49138ba36a509457e4df6/onnxruntime-1.22.0-cp313-cp313-macosx_13_0_universal2.whl", hash = "sha256:fe7c051236aae16d8e2e9ffbfc1e115a0cc2450e873a9c4cb75c0cc96c1dae07", size = 34298715, upload-time = "2025-05-09T20:26:05.634Z" },
694
  { url = "https://files.pythonhosted.org/packages/e1/89/1dfe1b368831d1256b90b95cb8d11da8ab769febd5c8833ec85ec1f79d21/onnxruntime-1.22.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6a6bbed10bc5e770c04d422893d3045b81acbbadc9fb759a2cd1ca00993da919", size = 14443266, upload-time = "2025-05-09T20:25:49.479Z" },
695
  { url = "https://files.pythonhosted.org/packages/1e/70/342514ade3a33ad9dd505dcee96ff1f0e7be6d0e6e9c911fe0f1505abf42/onnxruntime-1.22.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9fe45ee3e756300fccfd8d61b91129a121d3d80e9d38e01f03ff1295badc32b8", size = 16406707, upload-time = "2025-05-09T20:26:17.454Z" },
 
696
  { url = "https://files.pythonhosted.org/packages/9f/48/d61d5f1ed098161edd88c56cbac49207d7b7b149e613d2cd7e33176c63b3/onnxruntime-1.22.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0a2ac5bd9205d831541db4e508e586e764a74f14efdd3f89af7fd20e1bf4a1ed", size = 14454003, upload-time = "2025-05-09T20:25:52.287Z" },
697
  { url = "https://files.pythonhosted.org/packages/c3/16/873b955beda7bada5b0d798d3a601b2ff210e44ad5169f6d405b93892103/onnxruntime-1.22.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:64845709f9e8a2809e8e009bc4c8f73b788cee9c6619b7d9930344eae4c9cd36", size = 16427482, upload-time = "2025-05-09T20:26:20.376Z" },
698
  ]
@@ -1103,6 +1081,30 @@ wheels = [
1103
  { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" },
1104
  ]
1105
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1106
  [[package]]
1107
  name = "sniffio"
1108
  version = "1.3.1"
@@ -1200,14 +1202,14 @@ dependencies = [
1200
  { name = "typing-extensions", marker = "sys_platform != 'darwin'" },
1201
  ]
1202
  wheels = [
1203
- { url = "https://download.pytorch.org/whl/cpu/torch-2.7.0%2Bcpu-cp312-cp312-manylinux_2_28_aarch64.whl" },
1204
  { url = "https://download.pytorch.org/whl/cpu/torch-2.7.0%2Bcpu-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:64123c05615e27368c7a7816f6e39c6d219998693beabde0b0b9cedf91b5ed8b" },
1205
  { url = "https://download.pytorch.org/whl/cpu/torch-2.7.0%2Bcpu-cp312-cp312-win_amd64.whl", hash = "sha256:69e25c973bdd7ea24b0fa9f9792114950afaeb8f819e5723819b923f50989175" },
1206
  { url = "https://download.pytorch.org/whl/cpu/torch-2.7.0%2Bcpu-cp312-cp312-win_arm64.whl", hash = "sha256:1d7a6f33868276770a657beec7f77c7726b4da9d0739eff1b3ae64cc9a09d8e3" },
1207
- { url = "https://download.pytorch.org/whl/cpu/torch-2.7.0%2Bcpu-cp313-cp313-manylinux_2_28_aarch64.whl" },
1208
  { url = "https://download.pytorch.org/whl/cpu/torch-2.7.0%2Bcpu-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:3b09aa2c8d30fa567a8d13270fbf9af7ee472fdfafbc7dfdc87c607bf46001f7" },
1209
  { url = "https://download.pytorch.org/whl/cpu/torch-2.7.0%2Bcpu-cp313-cp313-win_amd64.whl", hash = "sha256:99ca8f4cb53484c45bb668657069c17139c07367ea20ddef2c0ce8412f42da2f" },
1210
- { url = "https://download.pytorch.org/whl/cpu/torch-2.7.0%2Bcpu-cp313-cp313t-manylinux_2_28_aarch64.whl" },
1211
  { url = "https://download.pytorch.org/whl/cpu/torch-2.7.0%2Bcpu-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:7b31fa6b1d026542b4ed8ce7ec7ee5489413cd9bd6479c14c5ad559c15d92e3b" },
1212
  { url = "https://download.pytorch.org/whl/cpu/torch-2.7.0%2Bcpu-cp313-cp313t-win_amd64.whl", hash = "sha256:b42cfe122faed26c6ffee1c97d64e6a1f72a081b64d457a2c97244c1497f4adc" },
1213
  ]
 
183
  { url = "https://files.pythonhosted.org/packages/a2/58/1f37bf81e3c689cc74ffa42102fa8915b59085f54a6e4a80bc6265c0f6bf/click-8.2.0-py3-none-any.whl", hash = "sha256:6b303f0b2aa85f1cb4e5303078fadcbcd4e476f114fab9b5007005711839325c", size = 102156, upload-time = "2025-05-10T22:21:01.352Z" },
184
  ]
185
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
186
  [[package]]
187
  name = "colorama"
188
  version = "0.4.6"
 
666
  { url = "https://files.pythonhosted.org/packages/4d/de/9162872c6e502e9ac8c99a98a8738b2fab408123d11de55022ac4f92562a/onnxruntime-1.22.0-cp312-cp312-macosx_13_0_universal2.whl", hash = "sha256:f3c0380f53c1e72a41b3f4d6af2ccc01df2c17844072233442c3a7e74851ab97", size = 34298046, upload-time = "2025-05-09T20:26:02.399Z" },
667
  { url = "https://files.pythonhosted.org/packages/03/79/36f910cd9fc96b444b0e728bba14607016079786adf032dae61f7c63b4aa/onnxruntime-1.22.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c8601128eaef79b636152aea76ae6981b7c9fc81a618f584c15d78d42b310f1c", size = 14443220, upload-time = "2025-05-09T20:25:47.078Z" },
668
  { url = "https://files.pythonhosted.org/packages/8c/60/16d219b8868cc8e8e51a68519873bdb9f5f24af080b62e917a13fff9989b/onnxruntime-1.22.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6964a975731afc19dc3418fad8d4e08c48920144ff590149429a5ebe0d15fb3c", size = 16406377, upload-time = "2025-05-09T20:26:14.478Z" },
669
+ { url = "https://files.pythonhosted.org/packages/36/b4/3f1c71ce1d3d21078a6a74c5483bfa2b07e41a8d2b8fb1e9993e6a26d8d3/onnxruntime-1.22.0-cp312-cp312-win_amd64.whl", hash = "sha256:c0d534a43d1264d1273c2d4f00a5a588fa98d21117a3345b7104fa0bbcaadb9a", size = 12692233, upload-time = "2025-05-12T21:26:16.963Z" },
670
  { url = "https://files.pythonhosted.org/packages/a9/65/5cb5018d5b0b7cba820d2c4a1d1b02d40df538d49138ba36a509457e4df6/onnxruntime-1.22.0-cp313-cp313-macosx_13_0_universal2.whl", hash = "sha256:fe7c051236aae16d8e2e9ffbfc1e115a0cc2450e873a9c4cb75c0cc96c1dae07", size = 34298715, upload-time = "2025-05-09T20:26:05.634Z" },
671
  { url = "https://files.pythonhosted.org/packages/e1/89/1dfe1b368831d1256b90b95cb8d11da8ab769febd5c8833ec85ec1f79d21/onnxruntime-1.22.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6a6bbed10bc5e770c04d422893d3045b81acbbadc9fb759a2cd1ca00993da919", size = 14443266, upload-time = "2025-05-09T20:25:49.479Z" },
672
  { url = "https://files.pythonhosted.org/packages/1e/70/342514ade3a33ad9dd505dcee96ff1f0e7be6d0e6e9c911fe0f1505abf42/onnxruntime-1.22.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9fe45ee3e756300fccfd8d61b91129a121d3d80e9d38e01f03ff1295badc32b8", size = 16406707, upload-time = "2025-05-09T20:26:17.454Z" },
673
+ { url = "https://files.pythonhosted.org/packages/3e/89/2f64e250945fa87140fb917ba377d6d0e9122e029c8512f389a9b7f953f4/onnxruntime-1.22.0-cp313-cp313-win_amd64.whl", hash = "sha256:5a31d84ef82b4b05d794a4ce8ba37b0d9deb768fd580e36e17b39e0b4840253b", size = 12691777, upload-time = "2025-05-12T21:26:20.19Z" },
674
  { url = "https://files.pythonhosted.org/packages/9f/48/d61d5f1ed098161edd88c56cbac49207d7b7b149e613d2cd7e33176c63b3/onnxruntime-1.22.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0a2ac5bd9205d831541db4e508e586e764a74f14efdd3f89af7fd20e1bf4a1ed", size = 14454003, upload-time = "2025-05-09T20:25:52.287Z" },
675
  { url = "https://files.pythonhosted.org/packages/c3/16/873b955beda7bada5b0d798d3a601b2ff210e44ad5169f6d405b93892103/onnxruntime-1.22.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:64845709f9e8a2809e8e009bc4c8f73b788cee9c6619b7d9930344eae4c9cd36", size = 16427482, upload-time = "2025-05-09T20:26:20.376Z" },
676
  ]
 
1081
  { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" },
1082
  ]
1083
 
1084
+ [[package]]
1085
+ name = "sms-spam-classification"
1086
+ version = "0.1.0"
1087
+ source = { virtual = "." }
1088
+ dependencies = [
1089
+ { name = "accelerate" },
1090
+ { name = "fastapi" },
1091
+ { name = "optimum", extra = ["onnxruntime"] },
1092
+ { name = "torch", version = "2.7.0", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform == 'darwin'" },
1093
+ { name = "torch", version = "2.7.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin'" },
1094
+ { name = "transformers" },
1095
+ { name = "uvicorn", extra = ["standard"] },
1096
+ ]
1097
+
1098
+ [package.metadata]
1099
+ requires-dist = [
1100
+ { name = "accelerate", specifier = ">=1.6.0" },
1101
+ { name = "fastapi", specifier = ">=0.115.12" },
1102
+ { name = "optimum", extras = ["onnxruntime"], specifier = "==1.24.0" },
1103
+ { name = "torch", specifier = ">=2.7.0", index = "https://download.pytorch.org/whl/cpu" },
1104
+ { name = "transformers", specifier = "<4.49.0" },
1105
+ { name = "uvicorn", extras = ["standard"], specifier = ">=0.34.2" },
1106
+ ]
1107
+
1108
  [[package]]
1109
  name = "sniffio"
1110
  version = "1.3.1"
 
1202
  { name = "typing-extensions", marker = "sys_platform != 'darwin'" },
1203
  ]
1204
  wheels = [
1205
+ { url = "https://download.pytorch.org/whl/cpu/torch-2.7.0%2Bcpu-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:a845b6f3bda3c40f736847dede95d8bfec81fb7e11458cd25973ba13542cf1f6" },
1206
  { url = "https://download.pytorch.org/whl/cpu/torch-2.7.0%2Bcpu-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:64123c05615e27368c7a7816f6e39c6d219998693beabde0b0b9cedf91b5ed8b" },
1207
  { url = "https://download.pytorch.org/whl/cpu/torch-2.7.0%2Bcpu-cp312-cp312-win_amd64.whl", hash = "sha256:69e25c973bdd7ea24b0fa9f9792114950afaeb8f819e5723819b923f50989175" },
1208
  { url = "https://download.pytorch.org/whl/cpu/torch-2.7.0%2Bcpu-cp312-cp312-win_arm64.whl", hash = "sha256:1d7a6f33868276770a657beec7f77c7726b4da9d0739eff1b3ae64cc9a09d8e3" },
1209
+ { url = "https://download.pytorch.org/whl/cpu/torch-2.7.0%2Bcpu-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:addf9107939522ffb3b60d2900fee838a77dbe098e2643e01164f46f8612f9c0" },
1210
  { url = "https://download.pytorch.org/whl/cpu/torch-2.7.0%2Bcpu-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:3b09aa2c8d30fa567a8d13270fbf9af7ee472fdfafbc7dfdc87c607bf46001f7" },
1211
  { url = "https://download.pytorch.org/whl/cpu/torch-2.7.0%2Bcpu-cp313-cp313-win_amd64.whl", hash = "sha256:99ca8f4cb53484c45bb668657069c17139c07367ea20ddef2c0ce8412f42da2f" },
1212
+ { url = "https://download.pytorch.org/whl/cpu/torch-2.7.0%2Bcpu-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:1bc9e6a4e2463582ae020d76ea0753ed9c84526e235089414d25c2c6d16ae866" },
1213
  { url = "https://download.pytorch.org/whl/cpu/torch-2.7.0%2Bcpu-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:7b31fa6b1d026542b4ed8ce7ec7ee5489413cd9bd6479c14c5ad559c15d92e3b" },
1214
  { url = "https://download.pytorch.org/whl/cpu/torch-2.7.0%2Bcpu-cp313-cp313t-win_amd64.whl", hash = "sha256:b42cfe122faed26c6ffee1c97d64e6a1f72a081b64d457a2c97244c1497f4adc" },
1215
  ]