summaryrefslogtreecommitdiffstats
path: root/machinelearning.scm
diff options
context:
space:
mode:
Diffstat (limited to 'machinelearning.scm')
-rw-r--r--machinelearning.scm669
1 files changed, 409 insertions, 260 deletions
diff --git a/machinelearning.scm b/machinelearning.scm
index 02975e7..27620cb 100644
--- a/machinelearning.scm
+++ b/machinelearning.scm
@@ -1,27 +1,53 @@
(define-module (machinelearning)
- #:use-module (gnu packages protobuf)
+ #:use-module ((guix licenses) :prefix license:)
+ #:use-module (gnu packages base)
+ #:use-module (gnu packages bash)
#:use-module (gnu packages check)
+ #:use-module (gnu packages wxwidgets)
+ #:use-module (gnu packages commencement)
+ #:use-module (gnu packages crates-io)
+ #:use-module (gnu packages golang)
+ #:use-module (gnu packages golang-build)
+ #:use-module (gnu packages golang-check)
+ #:use-module (gnu packages golang-maths)
+ #:use-module (gnu packages golang-compression)
+ #:use-module (gnu packages golang-crypto)
+ #:use-module (gnu packages gtk)
+ #:use-module (gnu packages prometheus)
+ #:use-module (gnu packages golang-web)
+ #:use-module (gnu packages golang-xyz)
+ #:use-module (gnu packages image)
+ #:use-module (gnu packages llvm)
+ #:use-module (gnu packages machine-learning)
+ #:use-module (gnu packages maths)
+ #:use-module (gnu packages opencl)
+ #:use-module (gnu packages pkg-config)
+ #:use-module (gnu packages protobuf)
#:use-module (gnu packages python)
- #:use-module (gnu packages python-check)
#:use-module (gnu packages python-build)
- #:use-module (gnu packages python-xyz)
- #:use-module (gnu packages python-web)
+ #:use-module (gnu packages version-control)
+ #:use-module (gnu packages python-check)
#:use-module (gnu packages python-crypto)
- #:use-module (gnu packages machine-learning)
+ #:use-module (gnu packages python-web)
+ #:use-module (gnu packages python-xyz)
+ #:use-module (gnu packages curl)
#:use-module (gnu packages rust)
- #:use-module (gnu packages maths)
#:use-module (gnu packages rust-apps)
- #:use-module (gnu packages crates-io)
- #:use-module (guix build-system python)
- #:use-module (guix build-system pyproject)
+ #:use-module (gnu packages vulkan)
+ #:use-module (gnu packages tls)
+ #:use-module (gnu packages)
+ #:use-module (guix build utils)
#:use-module (guix build-system cargo)
#:use-module (guix build-system cmake)
- #:use-module (guix build utils)
+ #:use-module (guix build-system gnu)
+ #:use-module (guix build-system go)
+ #:use-module (guix build-system pyproject)
+ #:use-module (guix build-system python)
+ #:use-module (guix download)
+ #:use-module (guix gexp)
#:use-module (guix git-download)
#:use-module (guix packages)
- #:use-module (guix gexp)
- #:use-module (guix download)
- #:use-module ((guix licenses) :prefix license:)
+ #:use-module (guix utils)
)
(define-public poetry-plugin-export
@@ -79,269 +105,96 @@
(description
"This package provides a library for installing Python wheels.")
(license #f)))
-
-(define-public python-rclip
+(define-public ggml
(package
- (name "rclip")
- (version "1.10.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "rclip" version))
- (sha256
- (base32 "05cv5hp63x6ym12s1a5lb7najjyzrqk40rvmj8x2y32hxsf6ampn"))))
- (build-system pyproject-build-system)
- (native-inputs (list python-poetry-core-1.9.0))
- (propagated-inputs (list python-open-clip-torch
- python-pillow
- python-requests
- python-pytorch
- python-torchvision
- python-tqdm))
- (arguments
- '( #:phases
- (modify-phases %standard-phases
- (delete 'check) ;#TODO: see why this is broke
- (delete 'sanity-check) ;TODO: Fix broken sanity-check
- )))
- (home-page "https://github.com/yurijmikhalevich/rclip")
- (synopsis "AI-Powered Command-Line Photo Search Tool")
- (description "AI-Powered Command-Line Photo Search Tool")
- (license license:expat)))
-
-(define-public python-open-clip-torch
- (package
- (name "python-open-clip-torch")
- (version "2.24.0")
+ (name "ggml")
+ (version "589fed13a77d7e54435c2182384955706b60b841")
(source
(origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/mlfoundations/open_clip")
- (commit (string-append "v" version))
- ))
+ (url "https://github.com/ggerganov/ggml")
+ (recursive? #t)
+ (commit version)))
(file-name (git-file-name name version))
(sha256
- (base32 "0mby632z2qpahb8pd8cmn14bz4w1q0cngz7s6rmx2qwfg2fxf1ms"))))
- (build-system pyproject-build-system)
- (inputs (list python-ftfy
- python-huggingface-hub
- python-protobuf
- python-regex
- python-sentencepiece
- python-timm
- python-pytorch
- python-torchvision
- python-tqdm
- python-wheel
- ))
+ (base32
+ "1qzydmiqsdxhj7gmaxbzllhhnb7rw49ykkj03jm044spk9nnn56s"))))
+ (build-system cmake-build-system)
+ (inputs (list openblas))
(arguments
- '( #:phases
- (modify-phases %standard-phases
- (delete 'check) ;Networking required for checks, so disable them
- (delete 'sanity-check) ;TODO: Fix broken sanity-check
- )))
- (home-page "https://github.com/mlfoundations/open_clip")
- (synopsis "OpenCLIP")
- (description "@code{OpenCLIP}")
+ '(
+ #:tests? #f
+ ;#:cmake "--config Release"
+ #:configure-flags (list "-DGGML_OPENBLAS=ON -DGGML_BUILD_TESTS=OFF -DGGML_BUILD_EXAMPLES=OFF --config Release")
+ ))
+ (home-page "https://github.com/ggerganov/ggml/")
+ (synopsis "Tensor library for machine learning")
+ (description "Tensor library for machine learning in pure C/C++")
(license license:expat)))
-(define-public python-ftfy
+(define-public ggml-vulkan
(package
- (name "python-ftfy")
- ;(version "6.2.0")
- (version "5.5.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "ftfy" version))
- (sha256
- ;(base32 "1h3m9i1c2qp874fpg62gcp39yqdhc5mrsqd29ja9gvr5f0y18hjy"))))
- (base32 "1ci6xrj4g01a97nymxpv9nj820nlmgzc4ybaz9k46i6bnxzpax7s"))))
- (build-system pyproject-build-system)
- (native-inputs (list poetry))
- (propagated-inputs (list python-wcwidth))
- (arguments
- '( #:phases
- (modify-phases %standard-phases
- (delete 'check)
- )))
- (home-page "")
- (synopsis "Fixes mojibake and other problems with Unicode, after the fact")
- (description
- "Fixes mojibake and other problems with Unicode, after the fact")
- (license license:asl2.0)))
-
-(define-public python-expecttest
- (package
- (name "python-expecttest")
- (version "0.2.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "expecttest" version))
- (sha256
- (base32 "1xbkpcp3477ccgr4ks16v0j22i7a939bs2rajvk0cigqlvw1qaz5"))))
- (build-system pyproject-build-system)
+ (inherit ggml)
+ (name "ggml-vulkan")
+ (build-system cmake-build-system)
+ (inputs (list shaderc vulkan-headers vulkan-loader openlibm glibc))
(arguments
- (list
- #:phases #~(modify-phases %standard-phases (delete 'check))))
- (native-inputs (list poetry))
- (home-page "https://github.com/ezyang/expecttest")
- (synopsis "")
- (description "")
+ '(
+ #:tests? #f
+ ;#:cmake "--config Release"
+ #:configure-flags (list "-DGGML_VULKAN=ON -DGGML_BUILD_TESTS=OFF -DGGML_BUILD_EXAMPLES=OFF --config Release")
+ ))
+ (home-page "https://github.com/ggerganov/ggml/")
+ (synopsis "Tensor library for machine learning")
+ (description "Tensor library for machine learning in pure C/C++")
(license license:expat)))
-(define-public python-timm
- (package
- (name "python-timm")
- (version "0.9.16")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "timm" version))
- (sha256
- (base32 "1rkif1mkgryirn78aw9rkwplf3hzfqbw3c0slwqxynnmfprm87l9"))))
- (build-system pyproject-build-system)
- (arguments
- (list
- #:phases
- #~(modify-phases %standard-phases
- (delete 'check) ;takes FOREVER for some reason
- (delete 'sanity-check ;Crashes; #TODO: fix this
- ))))
- (inputs (list python-huggingface-hub python-pyyaml
- python-safetensors python-pytorch
- python-torchvision python-pdm-backend
-
- python-pytest python-pytest-timeout python-expecttest python-pytest-xdist))
- (home-page "https://github.com/huggingface/pytorch-image-models")
- (synopsis "PyTorch Image Models")
- (description "@code{PyTorch} Image Models")
- (license license:asl2.0)))
-
-(define-public rust-memmap2-0.5
- (package
- (name "rust-memmap2")
- (version "0.5.0")
- (source
- (origin
- (method url-fetch)
- (uri (crate-uri "memmap2" version))
- (file-name (string-append name "-" version ".tar.gz"))
- (sha256
- (base32 "0vp9pxd20gyq8196v73chxdw6gfxz3g4lkdkvffd5slgawds2is6"))))
- (build-system cargo-build-system)
- (arguments
- `(#:cargo-inputs (("rust-libc" ,rust-libc-0.2)
- ("rust-stable-deref-trait" ,rust-stable-deref-trait-1))
- #:cargo-development-inputs (("rust-owning-ref" ,rust-owning-ref-0.4)
- ("rust-tempdir" ,rust-tempdir-0.3))))
- (home-page "https://github.com/RazrFalcon/memmap2-rs")
- (synopsis "Cross-platform Rust API for memory-mapped file IO")
- (description "Cross-platform Rust API for memory-mapped file IO")
- (license (list license:expat license:asl2.0))))
-
-(define-public rust-safetensors-0.4
+(define-public mlimgsynth
(package
- (name "rust-safetensors")
- (version "0.4.2")
- (source
- (origin
- (method url-fetch)
- (uri (crate-uri "safetensors" version))
- (file-name (string-append name "-" version ".tar.gz"))
- (sha256
- (base32 "1vb9wsmsm7wfyvkl795wpc2iiwa3mx0vqhhym2q6yhrlzdmhx64d"))))
- (build-system cargo-build-system)
- (arguments
- `(#:cargo-inputs (("rust-serde" ,rust-serde-1)
- ("rust-serde-json" ,rust-serde-json-1))
- #:cargo-development-inputs (("rust-criterion" ,rust-criterion-0.4)
- ("rust-memmap2" ,rust-memmap2-0.5)
- ("rust-proptest" ,rust-proptest-1))))
- (home-page "https://github.com/huggingface/safetensors")
- (synopsis
- "Provides functions to read and write safetensors which aim to be safer than
- their PyTorch counterpart.
- The format is 8 bytes which is an unsized int, being the size of a JSON header,
- the JSON header refers the `dtype` the `shape` and `data_offsets` which are the offsets
- for the values in the rest of the file.
- ")
- (description
- "This package provides functions to read and write safetensors which aim to be
- safer than their @code{PyTorch} counterpart. The format is 8 bytes which is an
- unsized int, being the size of a JSON header, the JSON header refers the `dtype`
- the `shape` and `data_offsets` which are the offsets for the values in the rest
- of the file.")
- (license license:asl2.0)))
-
-(define-public python-safetensors
- (package
- (name "python-safetensors")
- (version "0.4.2")
+ (name "mlimgsynth")
+ (version "fd351102a0c6719fe4437cb1bb834a87735861a1")
(source
(origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/huggingface/safetensors.git")
- (commit (string-append "v" version))
- ))
+ (url "https://github.com/aagdev/mlimgsynth")
+ (recursive? #t)
+ (commit version)))
(file-name (git-file-name name version))
(sha256
- (base32 "1gs0ivd5m95jyy6j1yqvm8pq068xsk405gv0nwq2821vr4ix9lw5"))))
- (build-system cargo-build-system)
+ (base32
+ "1gbppz9r0mjdis6gcvpkx3f4v0px7zz05k0cxkjq9s4v63xzr1p3"))))
+ (build-system gnu-build-system)
+ (inputs (list openblas ggml-vulkan libpng ijg-libjpeg))
(arguments
- (list
- #:imported-modules `(,@%cargo-build-system-modules
- ,@%pyproject-build-system-modules)
- #:modules '((guix build cargo-build-system)
- ((guix build pyproject-build-system) #:prefix py:)
- (guix build utils))
+ '(
+ #:tests? #f
+ #:make-flags (let* ((ggml-dir (assoc-ref %build-inputs "ggml-vulkan")))
+ (list (string-append "CC=gcc")
+ (string-append "GGML_INCLUDE_PATH=" ggml-dir "/include")
+ (string-append "GGML_LIB_PATH=" ggml-dir "/lib")))
#:phases
- #~(modify-phases %standard-phases
- (add-before 'configure 'get-safetensor-cargo
- (lambda _
- (copy-recursively "bindings/python/Cargo.toml" "./Cargo.toml")
- (substitute* "./Cargo.toml" ( ("name = \"safetensors_rust\"") "name = \"safetensors_rust\"\npath = \"bindings/python//src/lib.rs\"" ) )
- (substitute* "./Cargo.toml" ( ("path = \"../../safetensors\"") "path = \"safetensors\"" ) )
- ))
- (add-after 'prepare-python-module 'build-python-module
- (assoc-ref py:%standard-phases 'build))
- (add-after 'build-python-module 'install-python-module
- (assoc-ref py:%standard-phases 'install))
- (add-after 'compress-documentation 'remove-bloat
- (lambda _
- (delete-file-recursively "target")
- (delete-file-recursively "attacks")
- (delete-file-recursively "safetensors")
- ))
- )
+ (modify-phases %standard-phases
+ (delete 'check)
+ (delete 'configure)
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (install-file "mlimgsynth" (string-append out "/bin")))))
+ )
- #:cargo-inputs
- `(
- ;("rust-safetensors" ,rust-safetensors-0.4)
- ("rust-pyo3" ,rust-pyo3-0.20)
- ("rust-criterion" ,rust-criterion-0.5)
- ("rust-memmap2" ,rust-memmap2-0.5)
- ("rust-proptest" ,rust-proptest-1)
- ("rust-serde" ,rust-serde-1)
- ("rust-serde-json" ,rust-serde-json-1)
- )
- #:install-source? #false))
- (inputs
- (list maturin rust-safetensors-0.4 python-wheel))
- (native-inputs
- (list python-wrapper))
- (home-page "https://github.com/huggingface/safetensors")
- (synopsis "a new simple format for storing tensors safely")
- (description "This repository implements a new simple format for storing tensors safely (as opposed to pickle) and that is still fast (zero-copy).")
- (license license:asl2.0)))
+ )
+ )
+ (home-page "https://github.com/aagdev/mlimgsynth")
+ (synopsis " Image synthesis using machine learning")
+ (description "Generate images using Stable Diffusion (SD) models. This program is completely written in C and uses the GGML library. It is largely based in stable-diffusion.cpp, but with a focus in more concise and clear code.")
+ (license license:expat)))
(define-public stable-diffusion-cpp
(package
(name "stable-diffusion-cpp")
- (version "9c51d8787f78ef1bd0ead1e8f48b766d7ee7484d")
+ (version "dcf91f9e0f2cbf9da472ee2a556751ed4bab2d2a")
(source
(origin
(method git-fetch)
@@ -352,7 +205,7 @@
(file-name (git-file-name name version))
(sha256
(base32
- "0rcnlrsbhnfhfz2pzn8gxnnpdyz03z8ds0wq5xfbgc86hmg0v286"))))
+ "0dhh4m710kiwrs4yc64saab5rkjg5psxr15cm6fsl64pv4ssk7v5"))))
(build-system cmake-build-system)
(inputs (list openblas))
(arguments
@@ -368,6 +221,91 @@
(description "Inference of Stable Diffusion in pure C/C++")
(license license:expat)))
+(define-public stable-diffusion-cpp-vulkan
+ (package
+ (inherit stable-diffusion-cpp)
+ (name "stable-diffusion-cpp-vulkan")
+ (arguments
+ `(
+ #:tests? #f
+ #:configure-flags (list "-DSD_VULKAN=ON --config Release")
+ #:phases (modify-phases %standard-phases
+ (add-after 'install 'rename-binary
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((bin (string-append (assoc-ref outputs "out") "/bin/sd")))
+ (when (file-exists? bin)
+ (rename-file bin (string-append (dirname bin) "/sd-vulkan")))))))))
+ (inputs (list vulkan-headers vulkan-loader shaderc libomp))))
+
+(define-public exiv2-staticlibs
+ (package
+ (inherit exiv2)
+ (arguments
+ `(#:test-target "tests"
+ #:configure-flags (list "-DEXIV2_BUILD_UNIT_TESTS=ON"
+ ;; darktable needs BMFF to support
+ ;; CR3 files.
+ "-DEXIV2_ENABLE_BMFF=ON")
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'patch-gcc-reference
+ (lambda _
+ ;; _GLIBCXX_ASSERTIONS brings reference to GCC.
+ (substitute* "cmake/compilerFlags.cmake"
+ (("add_compile_options[(]-Wp,-D_GLIBCXX_ASSERTIONS[)]")
+ ""))))
+
+ ,@(if (or (target-ppc64le?)
+ (target-aarch64?)
+ (target-riscv64?))
+ '((add-after 'unpack 'adjust-tests
+ (lambda _
+ ;; Adjust test on ppc64 and aarch64, where no exception
+ ;; is raised and thus the return value is different. See
+ ;; <https://github.com/Exiv2/exiv2/issues/365> and
+ ;; <https://github.com/Exiv2/exiv2/issues/933>.
+ (substitute* "tests/bugfixes/github/test_CVE_2018_12265.py"
+ (("\\$uncaught_exception \\$addition_overflow_message\n") "")
+ (("retval = \\[1\\]") "retval = [0]")))))
+ '()))))
+ ))
+
+(define-public stable-diffusion-cpp-gui-wx
+ (package
+ (name "stable-diffusion-cpp-gui-wx")
+ (version "6f604f836961002fbce72a205c1e6cc6d6a531e9")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/fszontagh/sd.cpp.gui.wx")
+ (recursive? #t)
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "035zqhjnwdb07ag4chj9zijl70wk81kinqwlnvs9ixb2fzl1z374"))))
+ (build-system cmake-build-system)
+ (arguments
+ '(
+ #:tests? #f
+ #:configure-flags
+ (list
+ "-DSD_AVX=ON"
+ "-DWXWIDGETS_VERSION=3.2.5"
+ (string-append "-DWXWIDGETS_EXTRA_PATH=" (assoc-ref %build-inputs "wxwidgets"))
+ )
+ #:substitutable? #f
+ )
+ )
+ (native-inputs (list pkg-config))
+ (inputs (list openblas openssl curl exiv2-staticlibs wxwidgets gtk+ pangomm git stable-diffusion-cpp))
+ (synopsis "cross-platform GUI for Stable Diffusion C++")
+ (description "A cross-platform GUI for Stable Diffusion C++, built using wxWidgets.")
+ (home-page "https://stable-diffusion.fsociety.hu")
+ (license license:expat)
+ ))
+
(define-public bark-cpp
(package
(name "bark-cpp")
@@ -389,17 +327,24 @@
'(
#:tests? #f
#:configure-flags (list "-DGGML_OPENBLAS=ON --config Release")
- ;#:phases
- ;(modify-phases %standard-phases
- ; (add-after 'install 'install-main
- ; (lambda _
- ; (with-directory-excursion (string-append #$output "/bin")
- ; ;(symlink "main" "bark")
- ; (symlink "server" "bark-server")
- ; )
- ; )))
- )
- )
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'install 'install-server
+ (lambda _
+ (with-directory-excursion (string-append #$output "/bin")
+ (symlink "server" "bark-server")
+ )
+ ))
+ ;(add-after 'install 'install-main
+ ; (lambda _
+ ; (with-directory-excursion (string-append #$output "/bin")
+ ; (symlink "main" "bark")
+ ; )
+ ; ))
+ ;
+ )
+
+ ))
(home-page "https://github.com/PABannier/bark.cpp")
(synopsis "Real-time realistic multilingual text-to-speech generation to the community.")
(description "With bark.cpp, our goal is to bring real-time realistic multilingual text-to-speech generation to the community.")
@@ -483,3 +428,207 @@
(description "Inference of Stable Diffusion in pure C/C++")
(license license:expat)))
+(define-public clblast
+ (package
+ (name "clblast")
+ (version "1.6.3")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/CNugteren/CLBlast.git")
+ (commit version)
+ ))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1zp8rfkscnh4l9x71kp39hsg5zxfhkkf88886mv40hw0a1hafdvz"))
+ ))
+ (build-system cmake-build-system)
+ (arguments
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (delete 'check)
+ )))
+ (inputs (list opencl-clhpp opencl-icd-loader))
+ (home-page "https://cnugteren.github.io/clblast")
+ (synopsis "Tuned OpenCL BLAS")
+ (description "CLBlast is a lightweight, performant and tunable OpenCL BLAS library written in C++11. It is designed to leverage the full performance potential of a wide variety of OpenCL devices from different vendors, including desktop and laptop GPUs, embedded GPUs, and other accelerators. CLBlast implements BLAS routines: basic linear algebra subprograms operating on vectors and matrices. See the CLBlast website for performance reports on some devices.")
+ (license license:asl2.0)))
+
+(define-public kobold-cpp
+ (package
+ (name "kobold-cpp")
+ (version "1.76")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/LostRuins/koboldcpp.git")
+ (commit (string-append "v" version))
+ ))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "155207vyxl2gh156gf0zs6ylkixrgr563cdfzkapcdhzj9lpsdfk"))
+ ))
+ (build-system gnu-build-system)
+ (arguments
+ (list
+ #:make-flags
+ #~(list
+ "LLAMA_OPENBLAS=1"
+ "LLAMA_CLBLAST=1"
+ "LLAMA_VULKAN=1"
+ (string-append "CC=" #$(cc-for-target))
+ )
+ #:modules '((ice-9 textual-ports)
+ (guix build utils)
+ ((guix build python-build-system) #:prefix python:)
+ (guix build gnu-build-system))
+ #:imported-modules `(,@%default-gnu-imported-modules
+ (guix build python-build-system))
+
+
+ #:phases
+ #~(modify-phases %standard-phases
+ ;(add-after 'unpack 'disable-unrunable-tests
+ ; ;; test-eval-callback downloads ML model from network, cannot
+ ; ;; run in Guix build environment
+ ; (lambda _
+ ; (substitute* '("examples/eval-callback/CMakeLists.txt")
+ ; (("add_test") "#add_test"))
+ ; (substitute* '("examples/eval-callback/CMakeLists.txt")
+ ; (("set_property") "#set_property"))))
+ (add-after 'build 'install-python-scripts
+ (lambda _
+ (let ((bin (string-append #$output "/bin/")))
+ (define (make-script script)
+ (let ((suffix (if (string-suffix? ".py" script) "" ".py")))
+ (call-with-input-file
+ (string-append script suffix)
+ (lambda (input)
+ (call-with-output-file (string-append bin script)
+ (lambda (output)
+ (format output "#!~a/bin/python3\n~a"
+ #$(this-package-input "python")
+ (get-string-all input))))))
+ (chmod (string-append bin script) #o555)))
+ (make-script "koboldcpp.py")
+ ;(make-script "convert-hf-to-gguf")
+ ;(make-script "convert-llama-ggml-to-gguf")
+ ;(make-script "convert-hf-to-gguf-update.py")
+ )))
+ (add-after 'build 'install-compiled
+ (lambda _
+ (mkdir-p (string-append #$output "/lib"))
+ (mkdir-p (string-append #$output "/bin"))
+ (for-each (lambda (f)
+ (install-file f (string-append #$output "/lib"))) (find-files "." "\\.so$"))
+ (for-each (lambda (f)
+ (install-file f (string-append #$output "/bin"))) (find-files "." "\\.py$"))))
+ ;(add-after 'install-compiled 'wrap-python-scripts
+ ; ;(assoc-ref python:%standard-phases 'wrap)
+ ; (add-after 'wrap-python-scripts 'wrap-for-local-libs
+ ; (lambda _
+ ; (wrap-program (string-append #$output "/bin/koboldcpp.py")
+ ; '("PATH" ":" suffix (string-append #$output "/lib/")))
+ ; )
+ ; )
+ (delete 'configure)
+ (delete 'check)
+ (delete 'install) ;Only running "make" is necssary for install.
+ )))
+ (inputs (list python))
+ (native-inputs (list pkg-config gcc-toolchain))
+ (propagated-inputs
+ (list python-numpy python-pytorch python-sentencepiece openblas clblast opencl-clhpp opencl-icd-loader vulkan-headers vulkan-loader python-gguf python-customtkinter findutils))
+ (properties '((tunable? . #true))) ;use AVX512, FMA, etc. when available
+ (home-page "https://github.com/lostruins/koboldcpp")
+ (synopsis " A simple one-file way to run various GGML and GGUF models with a KoboldAI UI.")
+ (description "KoboldCpp is an easy-to-use AI text-generation software for GGML and GGUF models, inspired by the original KoboldAI. It's a single self-contained distributable from Concedo, that builds off llama.cpp, and adds a versatile KoboldAI API endpoint, additional format support, Stable Diffusion image generation, speech-to-text, backward compatibility, as well as a fancy UI with persistent stories, editing tools, save formats, memory, world info, author's note, characters, scenarios and everything KoboldAI and KoboldAI Lite have to offer.")
+ (license license:agpl3)))
+(define-public python-gguf
+ (package
+ (name "python-gguf")
+ (version "0.9.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "gguf" version))
+ (sha256
+ (base32 "0fyk7x6b2a7xjmf3q7zb61ik1yrk80xm7xx9yr2wa6avw63hkrzm"))))
+ (build-system pyproject-build-system)
+ (arguments
+ '( #:phases
+ (modify-phases %standard-phases
+ (delete 'check) ;#TODO: see why this is broke
+ (delete 'sanity-check) ;TODO: Fix broken sanity-check
+ )))
+ (native-inputs (list poetry))
+ (propagated-inputs (list python-numpy python-tqdm))
+ (home-page "https://ggml.ai")
+ (synopsis "Read and write ML models in GGUF for GGML")
+ (description "Read and write ML models in GGUF for GGML.")
+ (license #f)))
+
+(define-public python-darkdetect
+ (package
+ (name "python-darkdetect")
+ (version "0.8.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "darkdetect" version))
+ (sha256
+ (base32 "1cgqgpz36dfn7hsqc29ha9pmxmzdjlwdq9aclkgbagi6f08qwhmm"))))
+ (build-system pyproject-build-system)
+ (arguments
+ '( #:phases
+ (modify-phases %standard-phases
+ (delete 'check) ;#TODO: see why this is broke
+ (delete 'sanity-check) ;TODO: Fix broken sanity-check
+ )))
+ (home-page "")
+ (synopsis "Detect OS Dark Mode from Python")
+ (description "Detect OS Dark Mode from Python.")
+ (license #f)))
+
+(define-public python-customtkinter
+ (package
+ (name "python-customtkinter")
+ (version "5.2.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "customtkinter" version))
+ (sha256
+ (base32 "01yjv09r3cbdk09vamh7cdc5iqn2nj0bl383wqp9h74nzaxb73gx"))))
+ (build-system pyproject-build-system)
+ (arguments
+ '( #:phases
+ (modify-phases %standard-phases
+ (delete 'check) ;#TODO: see why this is broke
+ (delete 'sanity-check) ;TODO: Fix broken sanity-check
+ )))
+ (propagated-inputs (list python-darkdetect python-packaging
+ python-typing-extensions))
+ (home-page "https://customtkinter.tomschimansky.com")
+ (synopsis "Create modern looking GUIs with Python")
+ (description "Create modern looking GUIs with Python.")
+ (license #f)))
+(define-public python-rubbrband
+ (package
+ (name "python-rubbrband")
+ (version "0.2.19")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "rubbrband" version))
+ (sha256
+ (base32 "1sv7y2wvnmb0mabdbzwg0q6cf9mjkrik68dnbl3qa0slf8z7biy7"))))
+ (build-system pyproject-build-system)
+ (propagated-inputs (list python-pillow python-requests))
+ (home-page "https://github.com/rubbrband/rubbrband")
+ (synopsis "")
+ (description #f)
+ (license #f)))