Comments (10)
@PABannier thank you, I tried to quantize the weights and could successfully generate an output.wav
Here's the whole script for GooGle Colab, in case anyone else wants to try it out.
# install cmake
!apt update
!apt install -y cmake
# Clone bark c++ from github
%cd /content
!git clone https://github.com/PABannier/bark.cpp.git
# Build
%cd /content/bark.cpp
!mkdir build
%cd ./build
!cmake ..
!cmake --build . --config Release
# install Python dependencies
%cd /content/bark.cpp
!python3 -m pip install -r requirements.txt
# obtain the original bark and encodec weights and place them in ./models
!python3 download_weights.py --download-dir ./models
# convert the model to ggml format
!python3 convert.py \
--dir-model ./models \
--codec-path ./models \
--vocab-path ./ggml_weights/ \
--out-dir ./ggml_weights/
# Quantize weights
!mkdir ggml_weights_q4
!cp /content/bark.cpp/ggml_weights/ggml_vocab.bin /content/bark.cpp/ggml_weights_q4
!cp /content/bark.cpp/ggml_weights/ggml_weights_codec.bin /content/bark.cpp/ggml_weights_q4
!cp /content/bark.cpp/ggml_weights/vocab.txt /content/bark.cpp/ggml_weights_q4
!/content/bark.cpp/build/bin/quantize /content/bark.cpp/ggml_weights/ggml_weights_text.bin /content/bark.cpp/ggml_weights_q4/ggml_weights_text.bin q4_0
!/content/bark.cpp/build/bin/quantize /content/bark.cpp/ggml_weights/ggml_weights_coarse.bin /content/bark.cpp/ggml_weights_q4/ggml_weights_coarse.bin q4_0
!/content/bark.cpp/build/bin/quantize /content/bark.cpp/ggml_weights/ggml_weights_fine.bin /content/bark.cpp/ggml_weights_q4/ggml_weights_fine.bin q4_0
# run the inference
!/content/bark.cpp/build/bin/main -m ./ggml_weights_q4 -p "Hi this is a test with quantized weights"
# ZIP Files
!zip -r bark.zip /content/bark.cpp/build/bin /content/bark.cpp/ggml_weights /content/bark.cpp/ggml_weights_q4
# Move files to Google Drive for download
from google.colab import drive
drive.mount('/content/drive')
!cp /content/bark.cpp/bark.zip '/content/drive/My Drive/'
from bark.cpp.
Yes! Codec weights are not currently quantized because it does not provide any significant speed-ups (the forward pass is already fast), but degrades the audio quality.
I'm currently investigating other problems, so your input on this memory problem is very much welcome ;)
from bark.cpp.
I tested this, the execution breaks -
bark_forward_coarse_encoder: mem per token = 8.51 MB
bark_forward_coarse_encoder: sample time = 11.67 ms
bark_forward_coarse_encoder: predict time = 197814.42 ms / 610.54 ms per token
bark_forward_coarse_encoder: total time = 198112.20 ms
from bark.cpp.
Hi @hswlab !
Thanks for trying on Google Colab.
I tested the prompt "this is an audio" on multiple machines and it works for me. Maybe, the CPU provided by Google Colab is not powerful enough even to run bark.cpp
. A few suggestions:
- Try a different seed by passing with
--seed
- Quantize the weights
from bark.cpp.
Hi. @PABannier Sorry for asking here since I don't know how to contact you, but I want to know why bark_forward_fine_encoder tries to allocate 30GB of memory? None of the weights are at that size. Also using the original bark model(non ggml), it runs well.
fine_gpt_eval: failed to allocate 32031611289 bytes
bark_forward_fine_encoder: ggml_aligned_malloc: insufficient memory (attempted to allocate 30547.73 MB)
GGML_ASSERT: ggml.c:4408: ctx->mem_buffer != NULL
from bark.cpp.
Hi @akarshanbiswas ! Thanks for reaching out on this problem. Are you able to track back which operations cause this surge in memory? Also, which prompt did you input to the model?
from bark.cpp.
I followed the same instructions the OP has in his colab notebook. Additionally I tested with quantize weights using the scripts available in the repo.
I also found out that the weight with codec
in its name is not being quantized and the program crashes in the process.
I am yet to check the coredumps that I got which I will do in a few hours for now. (currently afk). 🙂
from bark.cpp.
I moved this discussion to a separate issue.
from bark.cpp.
it would be great to have #95 (comment) linked or incorporated into the README
from bark.cpp.
@khimaros I added it to the README. Thank you @hswlab !
from bark.cpp.
Related Issues (20)
- submodule encodec.cpp is dropped HOT 3
- missing requirements.txt HOT 1
- some more issues HOT 4
- Metal HOT 3
- preconverted model files HOT 3
- core dump when prompt contains underscore HOT 2
- encodec_weights.bin seems not produced by convert.py script HOT 3
- Runtime Error on Windows HOT 8
- api: merge ggml Bark weights and Encodec weights into a single file
- Make a WASM demo to demonstrate bark.cpp efficiency
- `bark_generate_audio` accepts an output path but does not actually write to it HOT 1
- Add progress callback HOT 3
- Add ability to cancel
- Add support for Swift Package Manager HOT 2
- Seed value is not passed through
- Will you implement StyleTTS2.cpp rescently?
- Documentation is wrong
- Can Bark.cpp support acceleration with AMD GPU with ROCM? HOT 1
- C-API for other programming languages? HOT 2
- model quantize bad encodec HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from bark.cpp.