lemonade-sdk 8.0.1__tar.gz → 8.0.2__tar.gz

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.

Potentially problematic release.


This version of lemonade-sdk might be problematic. Click here for more details.

Files changed (77) hide show
  1. {lemonade_sdk-8.0.1/src/lemonade_sdk.egg-info → lemonade_sdk-8.0.2}/PKG-INFO +1 -1
  2. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade/tools/report/table.py +9 -0
  3. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade/tools/server/tray.py +19 -6
  4. lemonade_sdk-8.0.2/src/lemonade/version.py +1 -0
  5. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2/src/lemonade_sdk.egg-info}/PKG-INFO +1 -1
  6. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade_server/cli.py +14 -12
  7. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade_server/pydantic_models.py +1 -0
  8. lemonade_sdk-8.0.1/src/lemonade/version.py +0 -1
  9. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/LICENSE +0 -0
  10. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/NOTICE.md +0 -0
  11. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/README.md +0 -0
  12. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/pyproject.toml +0 -0
  13. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/setup.cfg +0 -0
  14. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/setup.py +0 -0
  15. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade/__init__.py +0 -0
  16. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade/api.py +0 -0
  17. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade/cache.py +0 -0
  18. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade/cli.py +0 -0
  19. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade/common/__init__.py +0 -0
  20. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade/common/build.py +0 -0
  21. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade/common/cli_helpers.py +0 -0
  22. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade/common/exceptions.py +0 -0
  23. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade/common/filesystem.py +0 -0
  24. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade/common/network.py +0 -0
  25. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade/common/printing.py +0 -0
  26. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade/common/status.py +0 -0
  27. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade/common/system_info.py +0 -0
  28. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade/common/test_helpers.py +0 -0
  29. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade/profilers/__init__.py +0 -0
  30. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade/profilers/memory_tracker.py +0 -0
  31. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade/profilers/profiler.py +0 -0
  32. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade/sequence.py +0 -0
  33. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade/state.py +0 -0
  34. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade/tools/__init__.py +0 -0
  35. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade/tools/accuracy.py +0 -0
  36. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade/tools/adapter.py +0 -0
  37. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade/tools/bench.py +0 -0
  38. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade/tools/huggingface/bench.py +0 -0
  39. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade/tools/huggingface/load.py +0 -0
  40. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade/tools/huggingface/utils.py +0 -0
  41. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade/tools/humaneval.py +0 -0
  42. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade/tools/llamacpp/bench.py +0 -0
  43. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade/tools/llamacpp/load.py +0 -0
  44. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade/tools/management_tools.py +0 -0
  45. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade/tools/mmlu.py +0 -0
  46. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade/tools/oga/__init__.py +0 -0
  47. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade/tools/oga/bench.py +0 -0
  48. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade/tools/oga/load.py +0 -0
  49. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade/tools/oga/utils.py +0 -0
  50. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade/tools/perplexity.py +0 -0
  51. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade/tools/prompt.py +0 -0
  52. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade/tools/quark/__init__.py +0 -0
  53. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade/tools/quark/quark_load.py +0 -0
  54. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade/tools/quark/quark_quantize.py +0 -0
  55. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade/tools/report/__init__.py +0 -0
  56. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade/tools/report/llm_report.py +0 -0
  57. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade/tools/server/__init__.py +0 -0
  58. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade/tools/server/llamacpp.py +0 -0
  59. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade/tools/server/serve.py +0 -0
  60. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade/tools/server/static/favicon.ico +0 -0
  61. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade/tools/server/static/styles.css +0 -0
  62. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade/tools/server/static/webapp.html +0 -0
  63. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade/tools/server/tool_calls.py +0 -0
  64. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade/tools/server/utils/port.py +0 -0
  65. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade/tools/server/utils/system_tray.py +0 -0
  66. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade/tools/server/utils/thread.py +0 -0
  67. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade/tools/server/webapp.py +0 -0
  68. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade/tools/tool.py +0 -0
  69. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade_install/__init__.py +0 -0
  70. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade_install/install.py +0 -0
  71. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade_sdk.egg-info/SOURCES.txt +0 -0
  72. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade_sdk.egg-info/dependency_links.txt +0 -0
  73. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade_sdk.egg-info/entry_points.txt +0 -0
  74. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade_sdk.egg-info/requires.txt +0 -0
  75. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade_sdk.egg-info/top_level.txt +0 -0
  76. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade_server/model_manager.py +0 -0
  77. {lemonade_sdk-8.0.1 → lemonade_sdk-8.0.2}/src/lemonade_server/server_models.json +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lemonade-sdk
3
- Version: 8.0.1
3
+ Version: 8.0.2
4
4
  Summary: Lemonade SDK: Your LLM Aide for Validation and Deployment
5
5
  Author-email: lemonade@amd.com
6
6
  Requires-Python: >=3.10, <3.12
@@ -7,6 +7,7 @@ from tabulate import tabulate
7
7
  import lemonade.common.build as build
8
8
  import lemonade.common.filesystem as fs
9
9
  from lemonade.cache import Keys
10
+ from lemonade.tools.accuracy import LMEvalHarness
10
11
  from lemonade.tools.huggingface.bench import HuggingfaceBench
11
12
  from lemonade.tools.llamacpp.bench import LlamaCppBench
12
13
  from lemonade.tools.mmlu import AccuracyMMLU
@@ -527,6 +528,14 @@ class LemonadePerfTable(Table):
527
528
  ".2f",
528
529
  )
529
530
  ],
531
+ LMEvalHarness: [
532
+ AdditionalStat(
533
+ "EleutherAI\nLM Evaluation",
534
+ "^lm_eval_",
535
+ "^lm_eval_",
536
+ ".1f",
537
+ )
538
+ ],
530
539
  },
531
540
  "last_columns": [
532
541
  SimpleStat(
@@ -266,7 +266,7 @@ class LemonadeTray(SystemTray):
266
266
  self.logger.error(f"Error changing port: {str(e)}")
267
267
  self.show_balloon_notification("Error", f"Failed to change port: {str(e)}")
268
268
 
269
- def upgrade_to_latest(self, icon, item):
269
+ def upgrade_to_latest(self, _, __):
270
270
  """
271
271
  Download and launch the Lemonade Server installer
272
272
  """
@@ -281,21 +281,34 @@ class LemonadeTray(SystemTray):
281
281
  installer_path = os.path.join(
282
282
  tempfile.gettempdir(), "Lemonade_Server_Installer.exe"
283
283
  )
284
+ if os.path.exists(installer_path):
285
+ os.remove(installer_path)
284
286
 
285
287
  # Download the installer
286
288
  response = requests.get(self.latest_version_url, stream=True)
287
289
  response.raise_for_status()
288
290
 
289
- # Save the installer to disk
291
+ # Save the installer to disk and force write to disk
290
292
  with open(installer_path, "wb") as f:
291
293
  for chunk in response.iter_content(chunk_size=8192):
292
294
  f.write(chunk)
295
+ f.flush()
296
+ os.fsync(f.fileno())
293
297
 
294
- # Launch the installer
295
- subprocess.Popen([installer_path], shell=True)
298
+ # Launch the installer as a completely detached process
299
+ # subprocess.DETACHED_PROCESS - Creates a process that's not attached to the console
300
+ # subprocess.CREATE_NEW_PROCESS_GROUP - Creates a new process group
301
+ # close_fds=True - Closes file descriptors to prevent inheritance
302
+ subprocess.Popen(
303
+ [installer_path],
304
+ creationflags=subprocess.DETACHED_PROCESS
305
+ | subprocess.CREATE_NEW_PROCESS_GROUP,
306
+ close_fds=True,
307
+ shell=True,
308
+ cwd=tempfile.gettempdir(),
309
+ )
296
310
 
297
- # Quit the application
298
- self.exit_app(icon, item)
311
+ # No need to quit the application, the installer will handle it
299
312
 
300
313
  def create_menu(self):
301
314
  """
@@ -0,0 +1 @@
1
+ __version__ = "8.0.2"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lemonade-sdk
3
- Version: 8.0.1
3
+ Version: 8.0.2
4
4
  Summary: Lemonade SDK: Your LLM Aide for Validation and Deployment
5
5
  Author-email: lemonade@amd.com
6
6
  Requires-Python: >=3.10, <3.12
@@ -4,7 +4,6 @@ import os
4
4
  from typing import Tuple, Optional
5
5
  import psutil
6
6
  from typing import List
7
- import subprocess
8
7
 
9
8
 
10
9
  # Error codes for different CLI scenarios
@@ -88,23 +87,26 @@ def stop():
88
87
  # Terminate the main process first
89
88
  process.terminate()
90
89
 
91
- # Then terminate all children
90
+ # Then terminate llama-server child process (known to be stubborn)
91
+ # We avoid killing other child processes, such as the installer
92
92
  for child in children:
93
- try:
94
- child.terminate()
95
- except psutil.NoSuchProcess:
96
- pass # Child already terminated
93
+ if "llama-server" in child.name():
94
+ try:
95
+ child.terminate()
96
+ except psutil.NoSuchProcess:
97
+ pass # Child already terminated
97
98
 
98
99
  # Wait for main process
99
100
  process.wait(timeout=10)
100
101
 
101
- # Kill any children that didn't terminate gracefully
102
+ # Kill llama-server child process if it didn't terminate gracefully
102
103
  for child in children:
103
- try:
104
- if child.is_running():
105
- child.kill()
106
- except psutil.NoSuchProcess:
107
- pass # Child already terminated
104
+ if "llama-server" in child.name():
105
+ try:
106
+ if child.is_running():
107
+ child.kill()
108
+ except psutil.NoSuchProcess:
109
+ pass # Child already terminated
108
110
  except psutil.NoSuchProcess:
109
111
  # Process already terminated
110
112
  pass
@@ -62,6 +62,7 @@ class ChatCompletionRequest(BaseModel):
62
62
  tools: list[dict] | None = None
63
63
  max_tokens: int | None = None
64
64
  max_completion_tokens: int | None = None
65
+ response_format: dict | None = None
65
66
 
66
67
 
67
68
  class ResponsesRequest(BaseModel):
@@ -1 +0,0 @@
1
- __version__ = "8.0.1"
File without changes
File without changes
File without changes
File without changes
File without changes