| Stable (Recommended) |
-
+
jan.exe
|
-
+
Intel
|
-
+
M1/M2
|
-
+
jan.deb
|
-
+
jan.AppImage
From 2b676fee4277d08b0baec32434c169b1ab9a752d Mon Sep 17 00:00:00 2001
From: Service Account
Date: Mon, 26 Feb 2024 03:45:19 +0000
Subject: [PATCH 15/25] janhq/jan: Update README.md with nightly build artifact
URL
---
README.md | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/README.md b/README.md
index 05531f3b0..676be0f78 100644
--- a/README.md
+++ b/README.md
@@ -76,31 +76,31 @@ Jan is an open-source ChatGPT alternative that runs 100% offline on your compute
| Experimental (Nightly Build) |
-
+
jan.exe
|
-
+
Intel
|
-
+
M1/M2
|
-
+
jan.deb
|
-
+
jan.AppImage
From e86cd7e6619c151a4208a6dae17a1d501a2a1db4 Mon Sep 17 00:00:00 2001
From: Helloyunho
Date: Mon, 26 Feb 2024 12:57:53 +0900
Subject: [PATCH 16/25] feat: add a simple way to convert Hugging Face model to
GGUF (#1972)
* chore: add react developer tools to electron
* feat: add small convert modal
* feat: separate modals and add hugging face extension
* feat: fully implement hugging face converter
* fix: forgot to uncomment this...
* fix: typo
* feat: try hf-to-gguf script first and then use convert.py
HF-to-GGUF has support for some unusual models
maybe using convert.py first would be better but we can change the usage order later
* fix: pre-install directory changed
* fix: sometimes exit code is undefined
* chore: download additional files for qwen
* fix: event handling changed
* chore: add one more necessary package
* feat: download gguf-py from llama.cpp
* fix: cannot interpret wildcards on GNU tar
Co-authored-by: hiento09 <136591877+hiento09@users.noreply.github.com>
---------
Co-authored-by: hiento09 <136591877+hiento09@users.noreply.github.com>
---
core/src/extension.ts | 1 +
core/src/extensions/huggingface.ts | 30 ++
core/src/extensions/index.ts | 5 +
.../types/huggingface/huggingfaceEntity.ts | 34 ++
.../types/huggingface/huggingfaceInterface.ts | 58 +++
core/src/types/huggingface/index.ts | 2 +
core/src/types/index.ts | 1 +
electron/package.json | 6 +-
extensions/huggingface-extension/.gitignore | 3 +
extensions/huggingface-extension/.prettierrc | 8 +
extensions/huggingface-extension/README.md | 73 ++++
.../bin/mac-arm64/quantize | Bin 0 -> 1131096 bytes
extensions/huggingface-extension/download.bat | 3 +
extensions/huggingface-extension/package.json | 54 +++
.../huggingface-extension/rollup.config.ts | 72 ++++
.../scripts/install_deps.py | 14 +
.../huggingface-extension/scripts/version.txt | 1 +
.../src/@types/global.d.ts | 2 +
extensions/huggingface-extension/src/index.ts | 396 ++++++++++++++++++
.../huggingface-extension/src/node/index.ts | 187 +++++++++
.../huggingface-extension/tsconfig.json | 20 +
web/helpers/atoms/HFConverter.atom.ts | 44 ++
web/hooks/useConvertHuggingFaceModel.ts | 81 ++++
web/hooks/useGetHFRepoData.ts | 29 ++
.../HuggingFaceConvertingErrorModal/index.tsx | 30 ++
.../HuggingFaceConvertingModal/index.tsx | 73 ++++
.../ExploreModels/HuggingFaceModal/index.tsx | 70 ++++
.../HuggingFaceRepoDataLoadedModal/index.tsx | 100 +++++
.../HuggingFaceSearchErrorModal/index.tsx | 32 ++
.../HuggingFaceSearchModal/index.tsx | 45 ++
web/screens/ExploreModels/index.tsx | 19 +
31 files changed, 1491 insertions(+), 2 deletions(-)
create mode 100644 core/src/extensions/huggingface.ts
create mode 100644 core/src/types/huggingface/huggingfaceEntity.ts
create mode 100644 core/src/types/huggingface/huggingfaceInterface.ts
create mode 100644 core/src/types/huggingface/index.ts
create mode 100644 extensions/huggingface-extension/.gitignore
create mode 100644 extensions/huggingface-extension/.prettierrc
create mode 100644 extensions/huggingface-extension/README.md
create mode 100755 extensions/huggingface-extension/bin/mac-arm64/quantize
create mode 100644 extensions/huggingface-extension/download.bat
create mode 100644 extensions/huggingface-extension/package.json
create mode 100644 extensions/huggingface-extension/rollup.config.ts
create mode 100644 extensions/huggingface-extension/scripts/install_deps.py
create mode 100644 extensions/huggingface-extension/scripts/version.txt
create mode 100644 extensions/huggingface-extension/src/@types/global.d.ts
create mode 100644 extensions/huggingface-extension/src/index.ts
create mode 100644 extensions/huggingface-extension/src/node/index.ts
create mode 100644 extensions/huggingface-extension/tsconfig.json
create mode 100644 web/helpers/atoms/HFConverter.atom.ts
create mode 100644 web/hooks/useConvertHuggingFaceModel.ts
create mode 100644 web/hooks/useGetHFRepoData.ts
create mode 100644 web/screens/ExploreModels/HuggingFaceConvertingErrorModal/index.tsx
create mode 100644 web/screens/ExploreModels/HuggingFaceConvertingModal/index.tsx
create mode 100644 web/screens/ExploreModels/HuggingFaceModal/index.tsx
create mode 100644 web/screens/ExploreModels/HuggingFaceRepoDataLoadedModal/index.tsx
create mode 100644 web/screens/ExploreModels/HuggingFaceSearchErrorModal/index.tsx
create mode 100644 web/screens/ExploreModels/HuggingFaceSearchModal/index.tsx
diff --git a/core/src/extension.ts b/core/src/extension.ts
index 3528f581c..3b3edc7b3 100644
--- a/core/src/extension.ts
+++ b/core/src/extension.ts
@@ -4,6 +4,7 @@ export enum ExtensionTypeEnum {
Inference = 'inference',
Model = 'model',
SystemMonitoring = 'systemMonitoring',
+ HuggingFace = 'huggingFace',
}
export interface ExtensionType {
diff --git a/core/src/extensions/huggingface.ts b/core/src/extensions/huggingface.ts
new file mode 100644
index 000000000..16a1d9b8a
--- /dev/null
+++ b/core/src/extensions/huggingface.ts
@@ -0,0 +1,30 @@
+import { BaseExtension, ExtensionTypeEnum } from '../extension'
+import { HuggingFaceInterface, HuggingFaceRepoData, Quantization } from '../types/huggingface'
+import { Model } from '../types/model'
+
+/**
+ * Hugging Face extension for converting HF models to GGUF.
+ */
+export abstract class HuggingFaceExtension extends BaseExtension implements HuggingFaceInterface {
+ interrupted = false
+ /**
+ * Hugging Face extension type.
+ */
+ type(): ExtensionTypeEnum | undefined {
+ return ExtensionTypeEnum.HuggingFace
+ }
+
+ abstract downloadModelFiles(
+ repoID: string,
+ repoData: HuggingFaceRepoData,
+ network?: { ignoreSSL?: boolean; proxy?: string }
+ ): Promise
+ abstract convert(repoID: string): Promise
+ abstract quantize(repoID: string, quantization: Quantization): Promise
+ abstract generateMetadata(
+ repoID: string,
+ repoData: HuggingFaceRepoData,
+ quantization: Quantization
+ ): Promise
+ abstract cancelConvert(repoID: string, repoData: HuggingFaceRepoData): Promise
+}
diff --git a/core/src/extensions/index.ts b/core/src/extensions/index.ts
index 522334548..c6834482c 100644
--- a/core/src/extensions/index.ts
+++ b/core/src/extensions/index.ts
@@ -23,3 +23,8 @@ export { AssistantExtension } from './assistant'
* Model extension for managing models.
*/
export { ModelExtension } from './model'
+
+/**
+ * Hugging Face extension for converting HF models to GGUF.
+ */
+export { HuggingFaceExtension } from './huggingface'
diff --git a/core/src/types/huggingface/huggingfaceEntity.ts b/core/src/types/huggingface/huggingfaceEntity.ts
new file mode 100644
index 000000000..c3c320354
--- /dev/null
+++ b/core/src/types/huggingface/huggingfaceEntity.ts
@@ -0,0 +1,34 @@
+export interface HuggingFaceRepoData {
+ id: string
+ author: string
+ tags: Array<'transformers' | 'pytorch' | 'safetensors' | string>
+ siblings: {
+ rfilename: string
+ }[]
+ createdAt: string // ISO 8601 timestamp
+}
+
+/* eslint-disable @typescript-eslint/naming-convention */
+export enum Quantization {
+ Q3_K_S = 'Q3_K_S',
+ Q3_K_M = 'Q3_K_M', // eslint-disable-line @typescript-eslint/no-duplicate-enum-values
+ Q3_K_L = 'Q3_K_L',
+ Q4_K_S = 'Q4_K_S',
+ Q4_K_M = 'Q4_K_M', // eslint-disable-line @typescript-eslint/no-duplicate-enum-values
+ Q5_K_S = 'Q5_K_S',
+ Q5_K_M = 'Q5_K_M', // eslint-disable-line @typescript-eslint/no-duplicate-enum-values
+ Q4_0 = 'Q4_0',
+ Q4_1 = 'Q4_1',
+ Q5_0 = 'Q5_0',
+ Q5_1 = 'Q5_1',
+ IQ2_XXS = 'IQ2_XXS',
+ IQ2_XS = 'IQ2_XS',
+ Q2_K = 'Q2_K',
+ Q2_K_S = 'Q2_K_S',
+ Q6_K = 'Q6_K',
+ Q8_0 = 'Q8_0',
+ F16 = 'F16',
+ F32 = 'F32',
+ COPY = 'COPY',
+}
+/* eslint-enable @typescript-eslint/naming-convention */
diff --git a/core/src/types/huggingface/huggingfaceInterface.ts b/core/src/types/huggingface/huggingfaceInterface.ts
new file mode 100644
index 000000000..c99b2177d
--- /dev/null
+++ b/core/src/types/huggingface/huggingfaceInterface.ts
@@ -0,0 +1,58 @@
+import { Model } from '../model'
+import { HuggingFaceRepoData, Quantization } from './huggingfaceEntity'
+
+/**
+ * Hugging Face extension for converting HF models to GGUF.
+ * @extends BaseExtension
+ */
+export interface HuggingFaceInterface {
+ interrupted: boolean
+ /**
+ * Downloads a Hugging Face model.
+ * @param repoID - The repo ID of the model to convert.
+ * @param repoData - The repo data of the model to convert.
+ * @param network - Optional object to specify proxy/whether to ignore SSL certificates.
+ * @returns A promise that resolves when the download is complete.
+ */
+ downloadModelFiles(
+ repoID: string,
+ repoData: HuggingFaceRepoData,
+ network?: { ignoreSSL?: boolean; proxy?: string }
+ ): Promise
+
+ /**
+ * Converts a Hugging Face model to GGUF.
+ * @param repoID - The repo ID of the model to convert.
+ * @returns A promise that resolves when the conversion is complete.
+ */
+ convert(repoID: string): Promise
+
+ /**
+ * Quantizes a GGUF model.
+ * @param repoID - The repo ID of the model to quantize.
+ * @param quantization - The quantization to use.
+ * @returns A promise that resolves when the quantization is complete.
+ */
+ quantize(repoID: string, quantization: Quantization): Promise
+
+ /**
+ * Generates Jan model metadata from a Hugging Face model.
+ * @param repoID - The repo ID of the model to generate metadata for.
+ * @param repoData - The repo data of the model to generate metadata for.
+ * @param quantization - The quantization of the model.
+ * @returns A promise that resolves when the model metadata generation is complete.
+ */
+ generateMetadata(
+ repoID: string,
+ repoData: HuggingFaceRepoData,
+ quantization: Quantization
+ ): Promise
+
+ /**
+ * Cancels the convert of current Hugging Face model.
+ * @param repoID - The repository ID to cancel.
+ * @param repoData - The repository data to cancel.
+ * @returns {Promise} A promise that resolves when the download has been cancelled.
+ */
+ cancelConvert(repoID: string, repoData: HuggingFaceRepoData): Promise
+}
diff --git a/core/src/types/huggingface/index.ts b/core/src/types/huggingface/index.ts
new file mode 100644
index 000000000..c108c55e2
--- /dev/null
+++ b/core/src/types/huggingface/index.ts
@@ -0,0 +1,2 @@
+export * from './huggingfaceInterface'
+export * from './huggingfaceEntity'
diff --git a/core/src/types/index.ts b/core/src/types/index.ts
index ee6f4ef08..295d054e7 100644
--- a/core/src/types/index.ts
+++ b/core/src/types/index.ts
@@ -6,4 +6,5 @@ export * from './inference'
export * from './monitoring'
export * from './file'
export * from './config'
+export * from './huggingface'
export * from './miscellaneous'
diff --git a/electron/package.json b/electron/package.json
index a89803077..7cdb98360 100644
--- a/electron/package.json
+++ b/electron/package.json
@@ -15,12 +15,14 @@
"build/**/*.{js,map}",
"pre-install",
"models/**/*",
- "docs/**/*"
+ "docs/**/*",
+ "scripts/**/*"
],
"asarUnpack": [
"pre-install",
"models",
- "docs"
+ "docs",
+ "scripts"
],
"publish": [
{
diff --git a/extensions/huggingface-extension/.gitignore b/extensions/huggingface-extension/.gitignore
new file mode 100644
index 000000000..bdf39cc7f
--- /dev/null
+++ b/extensions/huggingface-extension/.gitignore
@@ -0,0 +1,3 @@
+bin
+scripts/convert*
+scripts/gguf-py
diff --git a/extensions/huggingface-extension/.prettierrc b/extensions/huggingface-extension/.prettierrc
new file mode 100644
index 000000000..46f1abcb0
--- /dev/null
+++ b/extensions/huggingface-extension/.prettierrc
@@ -0,0 +1,8 @@
+{
+ "semi": false,
+ "singleQuote": true,
+ "quoteProps": "consistent",
+ "trailingComma": "es5",
+ "endOfLine": "auto",
+ "plugins": ["prettier-plugin-tailwindcss"]
+}
diff --git a/extensions/huggingface-extension/README.md b/extensions/huggingface-extension/README.md
new file mode 100644
index 000000000..ae70eb4ec
--- /dev/null
+++ b/extensions/huggingface-extension/README.md
@@ -0,0 +1,73 @@
+# Create a Jan Plugin using Typescript
+
+Use this template to bootstrap the creation of a TypeScript Jan plugin. 🚀
+
+## Create Your Own Plugin
+
+To create your own plugin, you can use this repository as a template! Just follow the below instructions:
+
+1. Click the Use this template button at the top of the repository
+2. Select Create a new repository
+3. Select an owner and name for your new repository
+4. Click Create repository
+5. Clone your new repository
+
+## Initial Setup
+
+After you've cloned the repository to your local machine or codespace, you'll need to perform some initial setup steps before you can develop your plugin.
+
+> [!NOTE]
+>
+> You'll need to have a reasonably modern version of
+> [Node.js](https://nodejs.org) handy. If you are using a version manager like
+> [`nodenv`](https://github.com/nodenv/nodenv) or
+> [`nvm`](https://github.com/nvm-sh/nvm), you can run `nodenv install` in the
+> root of your repository to install the version specified in
+> [`package.json`](./package.json). Otherwise, 20.x or later should work!
+
+1. :hammer_and_wrench: Install the dependencies
+
+ ```bash
+ npm install
+ ```
+
+1. :building_construction: Package the TypeScript for distribution
+
+ ```bash
+ npm run bundle
+ ```
+
+1. :white_check_mark: Check your artifact
+
+ There will be a tgz file in your plugin directory now
+
+## Update the Plugin Metadata
+
+The [`package.json`](package.json) file defines metadata about your plugin, such as
+plugin name, main entry, description and version.
+
+When you copy this repository, update `package.json` with the name, description for your plugin.
+
+## Update the Plugin Code
+
+The [`src/`](./src/) directory is the heart of your plugin! This contains the
+source code that will be run when your plugin extension functions are invoked. You can replace the
+contents of this directory with your own code.
+
+There are a few things to keep in mind when writing your plugin code:
+
+- Most Jan Plugin Extension functions are processed asynchronously.
+ In `index.ts`, you will see that the extension function will return a `Promise`.
+
+ ```typescript
+ import { core } from "@janhq/core";
+
+ function onStart(): Promise {
+ return core.invokePluginFunc(MODULE_PATH, "run", 0);
+ }
+ ```
+
+ For more information about the Jan Plugin Core module, see the
+ [documentation](https://github.com/janhq/jan/blob/main/core/README.md).
+
+So, what are you waiting for? Go ahead and start customizing your plugin!
diff --git a/extensions/huggingface-extension/bin/mac-arm64/quantize b/extensions/huggingface-extension/bin/mac-arm64/quantize
new file mode 100755
index 0000000000000000000000000000000000000000..f8a149b1089d0ae2c3b1faa39085810584b6fa68
GIT binary patch
literal 1131096
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 7-(m9h&Urie66a&^nYInjt5MJaUviJnomJ
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 | |