nomic-ai/pygpt4all

2nd model.generate call throws segmentation fault

kodema5 opened this issue · 2 comments

calling model.generate second time (without reloading model) throws a segmentation fault.
is there a way to call model.generate multiple time without reload model?
thank you.

the following script,

from pygpt4all.models.gpt4all_j import GPT4All_J
model = GPT4All_J('../.models/ggml-gpt4all-j-v1.3-groovy.bin')

def cb(text):
    print(text,end="")

model.generate("What is today?", n_predict=55, new_text_callback=cb)

# is it needed to reload model?
# model = GPT4All_J('../.models/ggml-gpt4all-j-v1.3-groovy.bin')

model.generate("What is tomorrow?", n_predict=55, new_text_callback=cb)

throws a segmentation fault as below

gptj_model_load: loading model from '../.models/ggml-gpt4all-j-v1.3-groovy.bin' - please wait ...
gptj_model_load: n_vocab = 50400
gptj_model_load: n_ctx   = 2048
gptj_model_load: n_embd  = 4096
gptj_model_load: n_head  = 16
gptj_model_load: n_layer = 28
gptj_model_load: n_rot   = 64
gptj_model_load: f16     = 2
gptj_model_load: ggml ctx size = 4505.45 MB
gptj_model_load: memory_size =   896.00 MB, n_mem = 57344
gptj_model_load: ................................... done
gptj_model_load: model size =  3609.38 MB / num tensors = 285
gptj_generate: seed = 1682550769
gptj_generate: number of tokens in prompt = 4



gptj_generate: mem per token = 15478000 bytes
gptj_generate:     load time =     0.00 ms
gptj_generate:   sample time =     2.10 ms
gptj_generate:  predict time =   887.21 ms / 55.45 ms per token
gptj_generate:    total time =  1153.46 ms
gptj_generate: seed = 1682550770
gptj_generate: number of tokens in prompt = 4

zsh: segmentation fault  python test_pygpt4all.py

Hi @kodema5,
Thanks for reporting the issue.

It should be solved now. Please update the package and ensure you have pygptj version 1.0.9.

it works. thank you very much.