Merge pull request #307098 from r-ryantm/auto-update/cilium-cli
[NixPkgs.git] / pkgs / development / python-modules / openllm / default.nix
blob8a37e257ffa987e232e9da77f97662aa770f87d1
1 { lib
2 , buildPythonPackage
3 , hatch-fancy-pypi-readme
4 , hatch-vcs
5 , hatchling
6 , pytestCheckHook
7 , pythonOlder
8 , pythonRelaxDepsHook
9 , accelerate
10 , bentoml
11 , bitsandbytes
12 , build
13 , click
14 , ctranslate2
15 , datasets
16 , docker
17 , einops
18 , ghapi
19 , huggingface-hub
20 , hypothesis
21 , ipython
22 , jupyter
23 , jupytext
24 , nbformat
25 , notebook
26 , openai
27 , openllm-client
28 , openllm-core
29 , optimum
30 , peft
31 , pytest-mock
32 , pytest-randomly
33 , pytest-rerunfailures
34 , pytest-xdist
35 , safetensors
36 , scipy
37 , sentencepiece
38 , soundfile
39 , syrupy
40 , tabulate
41 , tiktoken
42 , transformers
43 , openai-triton
44 , xformers
47 buildPythonPackage rec {
48   inherit (openllm-core) src version;
49   pname = "openllm";
50   pyproject = true;
52   disabled = pythonOlder "3.8";
54   sourceRoot = "${src.name}/openllm-python";
56   nativeBuildInputs = [
57     pythonRelaxDepsHook
58   ];
60   pythonRemoveDeps = [
61     # remove cuda-python as it has an unfree license
62     "cuda-python"
63   ];
65   build-system = [
66     hatch-fancy-pypi-readme
67     hatch-vcs
68     hatchling
69   ];
71   dependencies = [
72     accelerate
73     bentoml
74     bitsandbytes
75     build
76     click
77     einops
78     ghapi
79     openllm-client
80     openllm-core
81     optimum
82     safetensors
83     scipy
84     sentencepiece
85     transformers
86   ] ++ bentoml.optional-dependencies.io
87   ++ tabulate.optional-dependencies.widechars
88   ++ transformers.optional-dependencies.tokenizers
89   ++ transformers.optional-dependencies.torch;
91   optional-dependencies = {
92     agents = [
93       # diffusers
94       soundfile
95       transformers
96     ] ++ transformers.optional-dependencies.agents;
97     awq = [
98       # autoawq
99     ];
100     baichuan = [
101       # cpm-kernels
102     ];
103     chatglm = [
104       # cpm-kernels
105     ];
106     ctranslate = [
107       ctranslate2
108     ];
109     falcon = [
110       xformers
111     ];
112     fine-tune = [
113       datasets
114       huggingface-hub
115       peft
116       # trl
117     ];
118     ggml = [
119       # ctransformers
120     ];
121     gptq = [
122       # auto-gptq
123     ]; # ++ autogptq.optional-dependencies.triton;
124     grpc = [
125       bentoml
126     ] ++ bentoml.optional-dependencies.grpc;
127     mpt = [
128       openai-triton
129     ];
130     openai = [
131       openai
132       tiktoken
133     ] ++ openai.optional-dependencies.datalib;
134     playground = [
135       ipython
136       jupyter
137       jupytext
138       nbformat
139       notebook
140     ];
141     starcoder = [
142       bitsandbytes
143     ];
144     vllm = [
145       # vllm
146     ];
147     full = with optional-dependencies; (
148       agents ++ awq ++ baichuan ++ chatglm ++ ctranslate ++ falcon ++ fine-tune ++ ggml ++ gptq ++ mpt
149       # disambiguate between derivation input and passthru field
150       ++ optional-dependencies.openai
151       ++ playground ++ starcoder ++ vllm
152     );
153     all = optional-dependencies.full;
154   };
156   nativeCheckInputs = [
157     docker
158     hypothesis
159     pytest-mock
160     pytest-randomly
161     pytest-rerunfailures
162     pytest-xdist
163     pytestCheckHook
164     syrupy
165   ];
167   preCheck = ''
168     export HOME=$TMPDIR
169     # skip GPUs test on CI
170     export GITHUB_ACTIONS=1
171     # disable hypothesis' deadline
172     export CI=1
173   '';
175   disabledTestPaths = [
176     # require network access
177     "tests/models"
178   ];
180   disabledTests = [
181     # incompatible with recent TypedDict
182     # https://github.com/bentoml/OpenLLM/blob/f3fd32d596253ae34c68e2e9655f19f40e05f666/openllm-python/tests/configuration_test.py#L18-L21
183     "test_missing_default"
184   ];
186   pythonImportsCheck = [ "openllm" ];
188   meta = with lib; {
189     description = "Operating LLMs in production";
190     homepage = "https://github.com/bentoml/OpenLLM/tree/main/openllm-python";
191     changelog = "https://github.com/bentoml/OpenLLM/blob/${src.rev}/CHANGELOG.md";
192     license = licenses.asl20;
193     maintainers = with maintainers; [ happysalada natsukium ];
194   };