From 0eed68fed4537feaea6a0a66929684e75feabb7c Mon Sep 17 00:00:00 2001 From: jmorganca Date: Fri, 7 Jun 2024 00:27:24 -0700 Subject: [PATCH] llama: sync --- llama/ggml-metal.o | Bin 240200 -> 373184 bytes llama/sampling_ext.cpp | 287 +++---------------------------------- llama/sampling_ext.h | 316 ++++------------------------------------- scripts/sync_llama.sh | 4 +- 4 files changed, 47 insertions(+), 560 deletions(-) diff --git a/llama/ggml-metal.o b/llama/ggml-metal.o index ac44271d01e3c7a00a54bd2825a7e0d2b96b9ae3..70b219df3bc9b71dc86c53cfb6fe65c7ac7dec95 100644 GIT binary patch literal 373184 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⁣Ce&DCqSDq6R%B?-m;id)9jp6;%?XeSYtA3 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 z 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 W^0Ugr>DlD7+4A(=K>poh-Tx1^cUnUL delta 107 zcmX@`SnR|Vz6lP(jw_fMK%j#WOfdlY6N7uX5Wtop_k; sparams.top_p = params->top_p; @@ -281,26 +22,30 @@ struct llama_sampling_context* llama_sampling_cinit(struct llama_sampling_cparam return llama_sampling_init(sparams); } -void llama_sampling_cfree(struct llama_sampling_context * ctx){ +void llama_sampling_cfree(struct llama_sampling_context *ctx) +{ llama_sampling_free(ctx); } -void llama_sampling_creset(struct llama_sampling_context * ctx){ +void llama_sampling_creset(struct llama_sampling_context *ctx) +{ llama_sampling_reset(ctx); } llama_token llama_sampling_csample( - struct llama_sampling_context * ctx_sampling, - struct llama_context * ctx_main, - struct llama_context * ctx_cfg, - int idx) { + struct llama_sampling_context *ctx_sampling, + struct llama_context *ctx_main, + struct llama_context *ctx_cfg, + int idx) +{ return llama_sampling_sample(ctx_sampling, ctx_main, ctx_cfg, idx); } void llama_sampling_caccept( - struct llama_sampling_context * ctx_sampling, - struct llama_context * ctx_main, - llama_token id, - bool apply_grammar) { + struct llama_sampling_context *ctx_sampling, + struct llama_context *ctx_main, + llama_token id, + bool apply_grammar) +{ llama_sampling_accept(ctx_sampling, ctx_main, id, apply_grammar); } diff --git a/llama/sampling_ext.h b/llama/sampling_ext.h index 37955719..baf1a0a9 100644 --- a/llama/sampling_ext.h +++ b/llama/sampling_ext.h @@ -1,263 +1,3 @@ -/** - * llama.cpp - git d5c938cd7716b9a2ace49a43a469dfbffcff4d28 - * - * MIT License - * - * Copyright (c) 2023-2024 The ggml authors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -/** - * llama.cpp - git d5c938cd7716b9a2ace49a43a469dfbffcff4d28 - * - * MIT License - * - * Copyright (c) 2023-2024 The ggml authors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -/** - * llama.cpp - git d5c938cd7716b9a2ace49a43a469dfbffcff4d28 - * - * MIT License - * - * Copyright (c) 2023-2024 The ggml authors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -/** - * llama.cpp - git d5c938cd7716b9a2ace49a43a469dfbffcff4d28 - * - * MIT License - * - * Copyright (c) 2023-2024 The ggml authors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -/** - * llama.cpp - git d5c938cd7716b9a2ace49a43a469dfbffcff4d28 - * - * MIT License - * - * Copyright (c) 2023-2024 The ggml authors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -/** - * llama.cpp - git d5c938cd7716b9a2ace49a43a469dfbffcff4d28 - * - * MIT License - * - * Copyright (c) 2023-2024 The ggml authors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -/** - * llama.cpp - git d5c938cd7716b9a2ace49a43a469dfbffcff4d28 - * - * MIT License - * - * Copyright (c) 2023-2024 The ggml authors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -/** - * llama.cpp - git d5c938cd7716b9a2ace49a43a469dfbffcff4d28 - * - * MIT License - * - * Copyright (c) 2023-2024 The ggml authors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -/** - * llama.cpp - git d5c938cd7716b9a2ace49a43a469dfbffcff4d28 - * - * MIT License - * - * Copyright (c) 2023-2024 The ggml authors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -/** - * llama.cpp - git d5c938cd7716b9a2ace49a43a469dfbffcff4d28 - * - * MIT License - * - * Copyright (c) 2023-2024 The ggml authors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - // TODO: this is a temporary wrapper to allow calling C++ code from CGo #ifndef LLAMA_SAMPLING_EXT_H #define LLAMA_SAMPLING_EXT_H @@ -265,39 +5,41 @@ #include "llama.h" #ifdef __cplusplus -extern "C" { +extern "C" +{ #endif -struct llama_sampling_cparams { - int32_t top_k; - float top_p; - float tfs_z; - float typical_p; - float temp; - float penalty_repeat; - float penalty_freq; - float penalty_present; - int32_t mirostat; - float mirostat_tau; - float mirostat_eta; - bool penalize_nl; - uint32_t seed; - char* grammar; -}; + struct llama_sampling_cparams + { + int32_t top_k; + float top_p; + float tfs_z; + float typical_p; + float temp; + float penalty_repeat; + float penalty_freq; + float penalty_present; + int32_t mirostat; + float mirostat_tau; + float mirostat_eta; + bool penalize_nl; + uint32_t seed; + char *grammar; + }; -struct llama_sampling_context* llama_sampling_cinit(struct llama_sampling_cparams *params); -void llama_sampling_cfree(struct llama_sampling_context * ctx); -void llama_sampling_creset(struct llama_sampling_context * ctx); + struct llama_sampling_context *llama_sampling_cinit(struct llama_sampling_cparams *params); + void llama_sampling_cfree(struct llama_sampling_context *ctx); + void llama_sampling_creset(struct llama_sampling_context *ctx); -llama_token llama_sampling_csample( - struct llama_sampling_context * ctx_sampling, - struct llama_context * ctx_main, - struct llama_context * ctx_cfg, + llama_token llama_sampling_csample( + struct llama_sampling_context *ctx_sampling, + struct llama_context *ctx_main, + struct llama_context *ctx_cfg, int idx); -void llama_sampling_caccept( - struct llama_sampling_context * ctx_sampling, - struct llama_context * ctx_main, + void llama_sampling_caccept( + struct llama_sampling_context *ctx_sampling, + struct llama_context *ctx_main, llama_token id, bool apply_grammar); diff --git a/scripts/sync_llama.sh b/scripts/sync_llama.sh index a6cfb12a..8f41e0bb 100755 --- a/scripts/sync_llama.sh +++ b/scripts/sync_llama.sh @@ -97,7 +97,7 @@ $(sed 's/^/ * /' <$src_dir/LICENSE) EOF for IN in $dst_dir/*.{c,h,cpp,m,metal,cu}; do - if [[ "$IN" == *"sgemm.cpp" || "$IN" == *"sgemm.h" ]]; then + if [[ "$IN" == *"sgemm.cpp" || "$IN" == *"sgemm.h" || "$IN" == *"sampling_ext.cpp" || "$IN" == *"sampling_ext.h" ]]; then continue fi TMP=$(mktemp) @@ -106,7 +106,7 @@ for IN in $dst_dir/*.{c,h,cpp,m,metal,cu}; do done # ggml-metal -sed -e '/#include "ggml-common.h"/r ggml-common.h' -e '/#include "ggml-common.h"/d' < $dst_dir/ggml-metal.metal > temp.metal +sed -e '/#include "ggml-common.h"/r llama/ggml-common.h' -e '/#include "ggml-common.h"/d' < $dst_dir/ggml-metal.metal > temp.metal TEMP_ASSEMBLY=$(mktemp) echo ".section __DATA, __ggml_metallib" > $TEMP_ASSEMBLY echo ".globl _ggml_metallib_start" >> $TEMP_ASSEMBLY