erllama_nif (erllama v0.1.0)

View Source

Single NIF entry module for erllama.

v0.2 surface (post step 2b):

crc32c/1 CRC32C of an iodata, dirty CPU. fsync_dir/1 dir fsync (dirty IO). load_model/2 path + opts -> {ok, ModelRef} | {error, _}. free_model/1 eager release; resource also freed on GC. new_context/2 model + opts -> {ok, CtxRef} | {error, _}. free_context/1 eager release; resource also freed on GC. tokenize/3 model + text + opts -> [token_id()]. kv_pack/3 ctx + tokens + n_tokens -> binary(). (Tokens/NTokens are informational; the in- memory llama API saves whatever is currently in the context's seq_id=0 KV cache. The model layer prefills exactly the desired prefix before calling.) kv_unpack/3 ctx + binary + seq_id -> ok | {error, _}.

Summary

Types

adapter_ref/0

-type adapter_ref() :: reference().

context_ref/0

-type context_ref() :: reference().

model_ref/0

-type model_ref() :: reference().

sampler_ref/0

-type sampler_ref() :: reference().

token_id/0

-type token_id() :: integer().

Functions

adapter_free(Adapter)

-spec adapter_free(adapter_ref()) -> ok | {error, atom()}.

adapter_load(Model, Path)

-spec adapter_load(model_ref(), iodata()) -> {ok, adapter_ref()} | {error, atom()}.

apply_chat_template(Model, Request)

-spec apply_chat_template(model_ref(), map()) -> {ok, [token_id()]} | {error, atom()}.

clear_sampler(Ctx)

-spec clear_sampler(context_ref()) -> ok.

configure_sampler(Ctx, Cfg)

-spec configure_sampler(context_ref(), map()) -> ok | {error, atom()}.

crc32c(Data)

-spec crc32c(iodata()) -> non_neg_integer().

decode_one(Ctx)

-spec decode_one(context_ref()) -> {ok, token_id()} | {eog, token_id()} | {error, term()}.

detokenize(Model, Tokens)

-spec detokenize(model_ref(), [token_id()]) -> binary() | {error, atom()}.

embed(Ctx, Tokens)

-spec embed(context_ref(), [token_id()]) -> {ok, [float()]} | {error, atom()}.

free_context(Ctx)

-spec free_context(context_ref()) -> ok.

free_model(Model)

-spec free_model(model_ref()) -> ok.

fsync_dir(Path)

-spec fsync_dir(iodata()) -> ok | {error, atom()}.

kv_pack(Ctx, Tokens, NTokens)

-spec kv_pack(context_ref(), [token_id()], non_neg_integer()) -> binary() | {error, atom()}.

kv_pack(Ctx, Tokens, NTokens, SeqId)

-spec kv_pack(context_ref(), [token_id()], non_neg_integer(), non_neg_integer()) ->
                 binary() | {error, atom()}.

kv_seq_rm(Ctx, SeqId, P0, P1)

-spec kv_seq_rm(context_ref(), integer(), integer(), integer()) -> ok | {error, atom()}.

kv_unpack(Ctx, Bin, SeqId)

-spec kv_unpack(context_ref(), binary(), non_neg_integer()) -> ok | {error, atom()}.

load_model(Path, Opts)

-spec load_model(iodata(), map()) -> {ok, model_ref()} | {error, atom()}.

new_context(Model, Opts)

-spec new_context(model_ref(), map()) -> {ok, context_ref()} | {error, atom()}.

prefill(Ctx, Tokens)

-spec prefill(context_ref(), [token_id()]) -> ok | {error, term()}.

sampler_free(Sampler)

-spec sampler_free(sampler_ref()) -> ok | {error, atom()}.

sampler_new(Ctx, Cfg)

-spec sampler_new(context_ref(), map()) -> {ok, sampler_ref()} | {error, atom()}.

set_adapters(Ctx, Adapters)

-spec set_adapters(context_ref(), [{adapter_ref(), float()}]) -> ok | {error, atom()}.

set_grammar(Ctx, Grammar)

-spec set_grammar(context_ref(), binary()) -> ok | {error, atom()}.

tokenize(Model, Text, Opts)

-spec tokenize(model_ref(), iodata(), map()) -> [token_id()] | {error, atom()}.