types.go 2.32 KB
Newer Older
Jeffrey Morgan's avatar
Jeffrey Morgan committed
1
2
package api

Michael Yang's avatar
Michael Yang committed
3
4
import "runtime"

Bruce MacDonald's avatar
Bruce MacDonald committed
5
6
7
8
type PullRequest struct {
	Model string `json:"model"`
}

Bruce MacDonald's avatar
Bruce MacDonald committed
9
type PullProgress struct {
Michael Yang's avatar
Michael Yang committed
10
11
	Total     int64   `json:"total"`
	Completed int64   `json:"completed"`
Bruce MacDonald's avatar
Bruce MacDonald committed
12
13
14
	Percent   float64 `json:"percent"`
}

Jeffrey Morgan's avatar
Jeffrey Morgan committed
15
16
17
type GenerateRequest struct {
	Model  string `json:"model"`
	Prompt string `json:"prompt"`
18

Michael Yang's avatar
Michael Yang committed
19
	Options `json:"options"`
20
21
}

Michael Yang's avatar
Michael Yang committed
22
23
type GenerateResponse struct {
	Response string `json:"response"`
24
25
}

Michael Yang's avatar
Michael Yang committed
26
27
type Options struct {
	Seed int `json:"seed,omitempty"`
28

Michael Yang's avatar
Michael Yang committed
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
	// Backend options
	UseNUMA bool `json:"numa,omitempty"`

	// Model options
	NumCtx        int  `json:"num_ctx,omitempty"`
	NumBatch      int  `json:"num_batch,omitempty"`
	NumGPU        int  `json:"num_gpu,omitempty"`
	MainGPU       int  `json:"main_gpu,omitempty"`
	LowVRAM       bool `json:"low_vram,omitempty"`
	F16KV         bool `json:"f16_kv,omitempty"`
	LogitsAll     bool `json:"logits_all,omitempty"`
	VocabOnly     bool `json:"vocab_only,omitempty"`
	UseMMap       bool `json:"use_mmap,omitempty"`
	UseMLock      bool `json:"use_mlock,omitempty"`
	EmbeddingOnly bool `json:"embedding_only,omitempty"`

	// Predict options
	RepeatLastN      int     `json:"repeat_last_n,omitempty"`
	RepeatPenalty    float32 `json:"repeat_penalty,omitempty"`
	FrequencyPenalty float32 `json:"frequency_penalty,omitempty"`
	PresencePenalty  float32 `json:"presence_penalty,omitempty"`
	Temperature      float32 `json:"temperature,omitempty"`
	TopK             int     `json:"top_k,omitempty"`
	TopP             float32 `json:"top_p,omitempty"`
	TFSZ             float32 `json:"tfs_z,omitempty"`
	TypicalP         float32 `json:"typical_p,omitempty"`
	Mirostat         int     `json:"mirostat,omitempty"`
	MirostatTau      float32 `json:"mirostat_tau,omitempty"`
	MirostatEta      float32 `json:"mirostat_eta,omitempty"`
58

Michael Yang's avatar
Michael Yang committed
59
	NumThread int `json:"num_thread,omitempty"`
Jeffrey Morgan's avatar
Jeffrey Morgan committed
60
61
}

Michael Yang's avatar
Michael Yang committed
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
func DefaultOptions() Options {
	return Options{
		Seed: -1,

		UseNUMA: false,

		NumCtx:   512,
		NumBatch: 512,
		NumGPU:   1,
		LowVRAM:  false,
		F16KV:    true,
		UseMMap:  true,
		UseMLock: false,

		RepeatLastN:      512,
		RepeatPenalty:    1.1,
		FrequencyPenalty: 0.0,
		PresencePenalty:  0.0,
		Temperature:      0.8,
		TopK:             40,
		TopP:             0.9,
		TFSZ:             1.0,
		TypicalP:         1.0,
		Mirostat:         0,
		MirostatTau:      5.0,
		MirostatEta:      0.1,

		NumThread: runtime.NumCPU(),
	}
Jeffrey Morgan's avatar
Jeffrey Morgan committed
91
}