From c142ec7ffa701d8e1630d1d04c4d9ee4f646da70 Mon Sep 17 00:00:00 2001 From: skyaphid Date: Thu, 1 Aug 2024 10:42:51 -0500 Subject: [PATCH 1/5] Comments out some code that causes warnings in Eclipse, suppresses warnings when it comes to using incubator features, and covers "Scanner in" in a try block. --- .classpath | 10 +++ .project | 17 ++++ bin/.gitignore | 1 + Llama3.java => src/com/llama4j/Llama3.java | 92 ++++++++++++---------- 4 files changed, 77 insertions(+), 43 deletions(-) create mode 100644 .classpath create mode 100644 .project create mode 100644 bin/.gitignore rename Llama3.java => src/com/llama4j/Llama3.java (97%) mode change 100755 => 100644 diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..49ae90d --- /dev/null +++ b/.classpath @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/.project b/.project new file mode 100644 index 0000000..8a906a7 --- /dev/null +++ b/.project @@ -0,0 +1,17 @@ + + + llama3.java + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/bin/.gitignore b/bin/.gitignore new file mode 100644 index 0000000..c2d9872 --- /dev/null +++ b/bin/.gitignore @@ -0,0 +1 @@ +/com/ diff --git a/Llama3.java b/src/com/llama4j/Llama3.java old mode 100755 new mode 100644 similarity index 97% rename from Llama3.java rename to src/com/llama4j/Llama3.java index 25a495f..2a0df6c --- a/Llama3.java +++ b/src/com/llama4j/Llama3.java @@ -85,44 +85,45 @@ static void runInteractive(Llama model, Sampler sampler, Options options) { conversationTokens.addAll(chatFormat.encodeMessage(new ChatFormat.Message(ChatFormat.Role.SYSTEM, options.systemPrompt()))); } int startPosition = 0; - Scanner in = new Scanner(System.in); - while (true) { - System.out.print("> "); - System.out.flush(); - String userText = in.nextLine(); - if (List.of("quit", "exit").contains(userText)) { - break; - } - if (state == null) { - state = model.createNewState(); - } - conversationTokens.addAll(chatFormat.encodeMessage(new ChatFormat.Message(ChatFormat.Role.USER, userText))); - conversationTokens.addAll(chatFormat.encodeHeader(new ChatFormat.Message(ChatFormat.Role.ASSISTANT, ""))); - Set stopTokens = chatFormat.getStopTokens(); - List responseTokens = Llama.generateTokens(model, state, startPosition, conversationTokens.subList(startPosition, conversationTokens.size()), stopTokens, options.maxTokens(), sampler, options.echo(), token -> { - if (options.stream()) { - if (!model.tokenizer().isSpecialToken(token)) { - System.out.print(model.tokenizer().decode(List.of(token))); - } - } - }); - // Include stop token in the prompt history, but not in the response displayed to the user. - conversationTokens.addAll(responseTokens); - startPosition = conversationTokens.size(); - Integer stopToken = null; - if (!responseTokens.isEmpty() && stopTokens.contains(responseTokens.getLast())) { - stopToken = responseTokens.getLast(); - responseTokens.removeLast(); - } - if (!options.stream()) { - String responseText = model.tokenizer().decode(responseTokens); - System.out.println(responseText); - } - if (stopToken == null) { - System.err.println("Ran out of context length..."); - break; - } - } + try (Scanner in = new Scanner(System.in)) { + while (true) { + System.out.print("> "); + System.out.flush(); + String userText = in.nextLine(); + if (List.of("quit", "exit").contains(userText)) { + break; + } + if (state == null) { + state = model.createNewState(); + } + conversationTokens.addAll(chatFormat.encodeMessage(new ChatFormat.Message(ChatFormat.Role.USER, userText))); + conversationTokens.addAll(chatFormat.encodeHeader(new ChatFormat.Message(ChatFormat.Role.ASSISTANT, ""))); + Set stopTokens = chatFormat.getStopTokens(); + List responseTokens = Llama.generateTokens(model, state, startPosition, conversationTokens.subList(startPosition, conversationTokens.size()), stopTokens, options.maxTokens(), sampler, options.echo(), token -> { + if (options.stream()) { + if (!model.tokenizer().isSpecialToken(token)) { + System.out.print(model.tokenizer().decode(List.of(token))); + } + } + }); + // Include stop token in the prompt history, but not in the response displayed to the user. + conversationTokens.addAll(responseTokens); + startPosition = conversationTokens.size(); + Integer stopToken = null; + if (!responseTokens.isEmpty() && stopTokens.contains(responseTokens.getLast())) { + stopToken = responseTokens.getLast(); + responseTokens.removeLast(); + } + if (!options.stream()) { + String responseText = model.tokenizer().decode(responseTokens); + System.out.println(responseText); + } + if (stopToken == null) { + System.err.println("Ran out of context length..."); + break; + } + } + } } static void runInstructOnce(Llama model, Sampler sampler, Options options) { @@ -346,7 +347,8 @@ public int byteSize() { } } - private void loadModelImpl(FileChannel fileChannel) throws IOException { + @SuppressWarnings("preview") + private void loadModelImpl(FileChannel fileChannel) throws IOException { // The header of the file. readHeader(fileChannel); // gguf_header_t header; // Tensor infos, which can be used to locate the tensor data. @@ -726,7 +728,7 @@ private static Tokenizer createTokenizer(Map metadata, Vocabular int allTokens = vocabulary.size(); int baseTokens = 128000; // assume all tokens after the base ones are special. - int reservedSpecialTokens = allTokens - baseTokens; + //int reservedSpecialTokens = allTokens - baseTokens; List specialTokensList = Arrays.stream(vocabulary.tokens(), baseTokens, allTokens).toList(); assert specialTokensList.stream().allMatch(token -> vocabulary.getIndex(token).isPresent()); @@ -1866,11 +1868,15 @@ public static Pair precomputeFreqsCis(int contextLength, int h if (ropeScaling) { // Llama 3.1 scaling float loFreqWavelen = oldContextLength / loFreqFactor; - float hiFreqWavelen = oldContextLength / hiFreqFactor; + //float hiFreqWavelen = oldContextLength / hiFreqFactor; float wavelen = (float) (2.0 * Math.PI / freq); - if (wavelen < hiFreqWavelen) { + + //This doesn't do anything, so it triggers a warning. + /*if (wavelen < hiFreqWavelen) { freq = freq; - } else if (wavelen > loFreqWavelen) { + } else */ + + if (wavelen > loFreqWavelen) { freq = freq / scaleFactor; } else { float smooth = (oldContextLength / wavelen - loFreqFactor) / (hiFreqFactor - loFreqFactor); From 7d0a5a5ce5323daa9199d2a79db613328cb089c2 Mon Sep 17 00:00:00 2001 From: skyaphid Date: Mon, 5 Aug 2024 16:28:13 -0500 Subject: [PATCH 2/5] Adjusted based on Mukel's feedback --- .classpath | 7 +- .gitignore | 1 + .project | 17 --- src/com/llama4j/Llama3.java => Llama3.java | 10 +- bin/.gitignore | 1 - bin/ArrayFloatTensor.class | Bin 0 -> 5518 bytes bin/CategoricalSampler.class | Bin 0 -> 4981 bytes bin/ChatFormat$Message.class | Bin 0 -> 4954 bytes bin/ChatFormat$Role.class | Bin 0 -> 5066 bytes bin/ChatFormat.class | Bin 0 -> 5576 bytes bin/Float16.class | Bin 0 -> 4596 bytes bin/FloatTensor$AggregateFunction.class | Bin 0 -> 4728 bytes bin/FloatTensor$MapFunction.class | Bin 0 -> 4715 bytes bin/FloatTensor$MapWithIndexFunction.class | Bin 0 -> 4734 bytes bin/FloatTensor.class | Bin 0 -> 7457 bytes bin/GGMLTensorEntry.class | Bin 0 -> 4990 bytes bin/GGMLType.class | Bin 0 -> 5608 bytes bin/GGUF$GGUFTensorInfo.class | Bin 0 -> 4978 bytes bin/GGUF$MetadataValueType.class | Bin 0 -> 5243 bytes bin/GGUF.class | Bin 0 -> 8126 bytes bin/LICENSE | 43 ++++++ bin/Llama$Configuration.class | Bin 0 -> 4918 bytes bin/Llama$State.class | Bin 0 -> 4926 bytes bin/Llama$Weights.class | Bin 0 -> 5192 bytes bin/Llama.class | Bin 0 -> 5759 bytes bin/Llama3$Options.class | Bin 0 -> 5539 bytes bin/Llama3.class | Bin 0 -> 5033 bytes bin/Makefile | 56 ++++++++ bin/ModelLoader.class | Bin 0 -> 5998 bytes bin/Pair.class | Bin 0 -> 5014 bytes bin/Parallel.class | Bin 0 -> 4721 bytes bin/Q4_0FloatTensor.class | Bin 0 -> 5596 bytes bin/Q8_0FloatTensor.class | Bin 0 -> 5671 bytes bin/README.md | 154 +++++++++++++++++++++ bin/RoPE.class | Bin 0 -> 4721 bytes bin/Sampler.class | Bin 0 -> 4665 bytes bin/Timer.class | Bin 0 -> 4941 bytes bin/Tokenizer.class | Bin 0 -> 7254 bytes bin/ToppSampler.class | Bin 0 -> 5152 bytes bin/Vocabulary.class | Bin 0 -> 5380 bytes 40 files changed, 259 insertions(+), 30 deletions(-) create mode 100644 .gitignore delete mode 100644 .project rename src/com/llama4j/Llama3.java => Llama3.java (99%) delete mode 100644 bin/.gitignore create mode 100644 bin/ArrayFloatTensor.class create mode 100644 bin/CategoricalSampler.class create mode 100644 bin/ChatFormat$Message.class create mode 100644 bin/ChatFormat$Role.class create mode 100644 bin/ChatFormat.class create mode 100644 bin/Float16.class create mode 100644 bin/FloatTensor$AggregateFunction.class create mode 100644 bin/FloatTensor$MapFunction.class create mode 100644 bin/FloatTensor$MapWithIndexFunction.class create mode 100644 bin/FloatTensor.class create mode 100644 bin/GGMLTensorEntry.class create mode 100644 bin/GGMLType.class create mode 100644 bin/GGUF$GGUFTensorInfo.class create mode 100644 bin/GGUF$MetadataValueType.class create mode 100644 bin/GGUF.class create mode 100644 bin/LICENSE create mode 100644 bin/Llama$Configuration.class create mode 100644 bin/Llama$State.class create mode 100644 bin/Llama$Weights.class create mode 100644 bin/Llama.class create mode 100644 bin/Llama3$Options.class create mode 100644 bin/Llama3.class create mode 100644 bin/Makefile create mode 100644 bin/ModelLoader.class create mode 100644 bin/Pair.class create mode 100644 bin/Parallel.class create mode 100644 bin/Q4_0FloatTensor.class create mode 100644 bin/Q8_0FloatTensor.class create mode 100644 bin/README.md create mode 100644 bin/RoPE.class create mode 100644 bin/Sampler.class create mode 100644 bin/Timer.class create mode 100644 bin/Tokenizer.class create mode 100644 bin/ToppSampler.class create mode 100644 bin/Vocabulary.class diff --git a/.classpath b/.classpath index 49ae90d..ac37fb2 100644 --- a/.classpath +++ b/.classpath @@ -1,10 +1,5 @@ - - - - - - + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..01cb415 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/.classpath diff --git a/.project b/.project deleted file mode 100644 index 8a906a7..0000000 --- a/.project +++ /dev/null @@ -1,17 +0,0 @@ - - - llama3.java - - - - - - org.eclipse.jdt.core.javabuilder - - - - - - org.eclipse.jdt.core.javanature - - diff --git a/src/com/llama4j/Llama3.java b/Llama3.java similarity index 99% rename from src/com/llama4j/Llama3.java rename to Llama3.java index 2a0df6c..bd3d4ab 100644 --- a/src/com/llama4j/Llama3.java +++ b/Llama3.java @@ -728,7 +728,7 @@ private static Tokenizer createTokenizer(Map metadata, Vocabular int allTokens = vocabulary.size(); int baseTokens = 128000; // assume all tokens after the base ones are special. - //int reservedSpecialTokens = allTokens - baseTokens; + List specialTokensList = Arrays.stream(vocabulary.tokens(), baseTokens, allTokens).toList(); assert specialTokensList.stream().allMatch(token -> vocabulary.getIndex(token).isPresent()); @@ -1868,15 +1868,13 @@ public static Pair precomputeFreqsCis(int contextLength, int h if (ropeScaling) { // Llama 3.1 scaling float loFreqWavelen = oldContextLength / loFreqFactor; - //float hiFreqWavelen = oldContextLength / hiFreqFactor; + float hiFreqWavelen = oldContextLength / hiFreqFactor; float wavelen = (float) (2.0 * Math.PI / freq); //This doesn't do anything, so it triggers a warning. - /*if (wavelen < hiFreqWavelen) { + if (wavelen < hiFreqWavelen) { freq = freq; - } else */ - - if (wavelen > loFreqWavelen) { + } else if (wavelen > loFreqWavelen) { freq = freq / scaleFactor; } else { float smooth = (oldContextLength / wavelen - loFreqFactor) / (hiFreqFactor - loFreqFactor); diff --git a/bin/.gitignore b/bin/.gitignore deleted file mode 100644 index c2d9872..0000000 --- a/bin/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/com/ diff --git a/bin/ArrayFloatTensor.class b/bin/ArrayFloatTensor.class new file mode 100644 index 0000000000000000000000000000000000000000..f03b214bbc833170d0013ce85fc132c8a9a629f8 GIT binary patch literal 5518 zcmeHLTW=dh6h32;*xsZ~8Yq_*=rmAR2XG4HsVMP#2IhW+U>6GR8A^HANDf4=X~crm-F{OzyApU-@sQzC=giN(V7i* zL&Z#s%UJ0mED%^8`9NT)&%%Vq1PX_{IJzsOF!u;7x`(@!0|E;VRKSa{Oknkx_1RX) zWM}K4)=HP)5?TB8JE?iB!afhEucDp^nGs6To>oU8kK#MjDO*13Gbxp!N1Q&TH;OW9 z20i|oB+oCcE+2Y`S|3)e@2mSq$J{p={;blvp(3V220|lAI6zmox#rTx;Iy@haQs7p z{{mX|Ll(!hEkYhUeTdMK0Vyk#_v7P52RQieq_cOe1CP}z|6nE!-z zINiW9tA-(q*!J-T4HS>5Ev$$cze^3~3;(Hy(I4g5NJA{5p3;UM2TwAzd_^QSt%aJZ z&l$*Uk<5fQe?mEy zYa*djw!d=``b-PEu}I1GbudBNIPE-CYj*7tn70`nmv_;+P0R6DtDUDZ*VQ!hUrx1| zYHlYn>OrVtp0gVrExqO-Hau%P>6B-ZH51YB^fXg0{#Pg)*^|9f##O*@EpzK7J-khy zeWqo0igWQ)(>0%QDm%a(x6)1AcnjQ*=S?rEnY)Sf?HQSc)?nRce*R>6aU8ihaF%uG zz_t=RHc(0a9Q(2+J!Udc(H@svGxYUjCp+N4>IxKLjlfmcd)B!~E4*eq8>^m>{M#ft z;<{z$76R*@@>zIrvOt}DTrgdM-H~N>IAMoPNWeLugkuO1*)}U`zFJt3Toka`+csp2)LEr;btfhA>4We zyEmoy>6b;fp7w97zX`0k6>o2^;k9sttjl=v$Mky?V)CJFZXJoolqYcc6g|yt0ykW5 zEX`}D_NHGEwcHdP$xNaV(|wNmZVF$!_ad9qREhTaE;b`jGtVAvzpmPl72$JiL=8Z>@~sHlS0n8-{%_ScD~fE8$hdJF1Fr+xWMDPv;MC zzF%MY4KDwMqXJyP`x4Sv&UL)64Bs7i6W+qnFK`v!K0(+-1WT79yz?SL@!Alq5M|NQ^D}`Zl*X zR9Zwl>G5=&p!Q+egSA6G;r9|Qhxc|54l%MmG(7N+As)P;<r} zJZO9^q_E$5aAWgS>)m}1mbX=mKD_C{>N6RSv{rfrR=u@fe~=oDN+uYyNTp+ua4VE# zW33JnOwCs;Xu5tZ;!-Nh4v_taw~BFQr(=8#Dbq`Tgt>;8(_!1$w_VtGjy~J0W0^2a z$XICF0?CwAJwS~zBI69SO6mJ)Mr|=`M+rBE4Mc(_XwH$+A8GXyClg+@phq%GFIq;= zY9WUgEhTq~g$s$1Oyx{A=Ft%!BHJK0YbOa$`TfHU7ArK&IabPTG-8(a3;sMN>(BPs zC`>HUvC@_u#z%8z`H~=RTMJb=pL4*Rlhhh-@jzK~CI2^EW<^rVB(H%p=i^C_bRKYt z>UqNLXpYI)%$Z#pRnH9yg|QXFI+F4p)D@_bfr4h2k1M*?T21NMJGkVtXiO*L~&bdFTN_s z?)+dMH0czusAZ|Y6qmQ^=u@?`i*YU=RXy{Xp=_TrZl!yacniwM%fd^s%$-a|?vBh8 zw_rWsQF*YuydI@{;5_HhK2I_X`BY`)G4@55^c;0@wvq#A!L=4NVcmn9o8dF&qVVu7 z$84;ILgM2rJwV-ev4z-`P!X@Pe|$h4|6H~sVTc|HPg5^MpR9G!j#T`FYn~!mlaNlq}Y)YVFXEj;HZ(DH=*u9xI00uMT}c3aNC1B zXEQ8Buuz|#%5;P~be$*pp}QP@*>;Pj)pum1q@fIp(unT`@jf~lO?}uP1w5xxA3iz3 zB<*3ObnHQ^D~zEFbf2ginqZ^&4_^TBN>r{;SqC3hh^Jbj(u9ECSE+WN+TEYv4`}_k z{?>1>_E(O%PR|DQ0xCD?*~;qy+=RF3>m4drh`h?1--Y*Ri1(@PI^3f7>485uJ+S}F hoPn3&L+ZZ-9|5B`z^7Ci^nC|DhR>+JLK5<2{0l@WhH3x+ literal 0 HcmV?d00001 diff --git a/bin/ChatFormat$Message.class b/bin/ChatFormat$Message.class new file mode 100644 index 0000000000000000000000000000000000000000..c3a0df2473d7f2d0119b0695b02029bb7089d932 GIT binary patch literal 4954 zcmeHL+in{-5S>+B$=ax~qbBLSWgRDVUKA9~Q*S_H#Ek(d2`tw@AL(66OJ|oP{ zNPeY23$*Y3s33=4BbE@YR}N$cMFK&~+aYJj8O{vnzh{5_LqtE&?FQ8XYHudoZE2Hn zx84)h@}X$ZQb4N*{E**Cxfzm zsv(B!-%BOkj{)7_}hD+wW(t;@?JnIC+poeMw?|?309x}qKvRQJrpsEbT*PH zcTy`hGI~E1nf;c9O+SxCTq*6?zF;r#PBYHjcqHCJ%Fbms5l1J){26w<5_AeBm~oyR zw(Xd-OsZHK=t(-pQ4fR>DuQqZMrUaMmSZetohaqjvVly64VyEl>?TJ4&LP6{CUjrr z*?H3_)c?Gx99@cq6Nv>xv0yf$ggNMo_+td= zPtI5?L@cwBHjW*{PiAoWnjl`SrLN@X3^0F5=2~y@KsD!1-ZWh9WIC5f-U285nezCBdQq+Q-La3C~WrlsAB3|yD9a(lUrU8t)9rV z8TZ97LpWE#{DMf{8#{3?A0TF^pm!=TZ2IBS6%M(PKCmcYk4$_DwQ1}kSnDU=1(pS) z)ATNyw<;Zfz1(&6Out%a{;RPz*PZ(*cX~6`R+L1elUJ`lwoc3nC&T7kwB`bBrJB3B zbn*X!?9DdzVG~}!38PByOYwNCwmwywU95BQsA|sVG-Z2;xV7mc@Ro?j%gjr$&8=KT z{*BC2zhN`rQMs|axEZB7a27wb$J1PN`B>-WHuhDww8K@bv!8_$hU2VHKje^Fbfra2 zY6o;}V|Hd^r7M+qm}mRK?0VbcQzkm%>E5w}I__L@iL?P-oy?aU=Vy>mS?vjz==d== zJQI*6kYQivCK6kCTL*Nh>tAZ$bo~1rtZXafXDq@U`1A)7J26o*4yd)Qu&qu1CKt9r zpJ9=c)DDt5FY-YQX_%9db)WP>ipCcWx-pe2+7Xd9af5D7^%e#W1bfn2q=a^neF4kM z4~2CPv_;yeUQDE~DWG?do~lus-laNfZEDam$^gG6g&4Vn)?J`HF8rHXzqT*`Nvr>& zRipRutpn-tSMhBf)kC^Q*U|a_|7Hyf6BhNr5Am(hNAxjDqEGN|qaDzv^f`LJK=~!g aTj;N&e~s4ZE7WV~-#~d8wSvhb7M}z7*ML6& literal 0 HcmV?d00001 diff --git a/bin/ChatFormat$Role.class b/bin/ChatFormat$Role.class new file mode 100644 index 0000000000000000000000000000000000000000..e06815fec6257a1945a5384644ccde7dec47de7f GIT binary patch literal 5066 zcmeHLTW=dh6h7;^zHCjKhL&4_PD3dPAXkX;LIEj_5^Bj#Dz6)!;M!Km&5qJB zH+Q=#!YY&O`#Gvgt?Cdso)FT{z3n6+Wk zMnN-+f;skVvX)^YVL}E%Q=mj+GIbv{N}rt5*D9v>A5xkNSksSqlCZvrFmda1wDdx) ze&poB^H#Ji)A+n~WZ7}vS|&-cbR_|jtE|h0+<(po$kr&$no-1K{@`$p1qu^p6N`$5 zA2LJnfvNfwf~d_uY4PX2FnsS(ja zE_qEjbw18!q|JZ}G|v-m!Z|KuQ)hN=RXsCNTO_7HSxXumpe~@w5#-i8d|1G`&~9?i z-svqbNmmDBrN zT?-NIM2ee*V)4I1*_mJL-8!8D2DQx1m+bOZTz!fnJCk$qRK+V_u$1jn$E~zSjklnF zJg>ZD+uTW|Z|}%FvK!WY?&lZFi{r?RfwP=L`#egq&BrRuudy$?r7o9&ioZvRnv<KXeJq<$B!stg(1a>@!Zm>`scTUGl2r?la zPo>(&9lD@9aHVapdtWv!2tY_pOZrMC)H6|I@K}&Jv>%QgXtX5RX3JjeF{#2wB;*(Z zA|NM&lT2|-Ymj1j&72QCqWRfbi# z3>A8+LltV1v3@kVld(jUL2u0f*bT-Axfa%P5N(4 zo?UorBI9lPa@iq8cKRK7ml)ooXUlMl#utJudnWk(lY(ns%@JII4~eG)w}H_JaEE>_ gNp)Zi?vkDjdauy@$M6Y!O3x+w{uzxmqL^&^Z@yQKY5)KL literal 0 HcmV?d00001 diff --git a/bin/ChatFormat.class b/bin/ChatFormat.class new file mode 100644 index 0000000000000000000000000000000000000000..9fd030e2df3584b8bc6c18c918f99c7683610da2 GIT binary patch literal 5576 zcmeHLZF3tn5Z+5e&b~NtYEmdrs2U1&cyS61Z*|B_8yd)rO**y741AN%vaRG!GCEzT z`62ujW?%-s^P?D6zO&;Dceaypl40lvdr!JY&#rd0l5YR{`?o&;;7cgmFlT|Y)1i7- zDxYc_<}Fw`q{no_qoTdB-#BEhwjitJ5fl7prYu;j)CY|+wi>L>#eS>Ko+HlMLo5@` zZy0U%v4N&a4_f98B10u2)L>Mu-(O`xK-~pEXbeO z_(UnGGO%i`{PLYpERfzYYZ6!bUG7oMr664;8y@q6hs4R6am1xUNKG1y4DnhLN_4Nw zUO>|PQtz<7hlufE$*hl3v_2C2St5Iy@PKg9=1Q6jLuEqNrS1{tDp|uc zD|sIE>E_`YX-XCllUTTuxE-Q#y|Cw9jQ;3|wJ5~g?@Fb~Ve=@#$}57HWzFS8d(Hqe zNir4R?15s+nf%{yq2}IHA$b8DIUi4Fq{)Cwbk9?&I|(5pBWHH%u6kxrg$H_qvOS?$ zo2dz?6e1^ErQHcbrwS6Wgd1po{ANMqS9JcVzFu_@4flk)E zPGvZzikpi?1lw15X`K=~3)5;Ha|EVcMz7YkNo)LSt*gkyb2VD|=QC}poO={%x#P)z zrQAkGQ?J$wG)uZpI@zgoO$FNZB-K-`#s3Pjn!MRNSv&{1Ze<5}`;ca2;OB!7{vR!Hr_&q;e5uc-d4o@)a)Fx1rx)s&4ic z3kntKQtu!>pyJMX-Qj@+xynh&25T_6Hq*nJj0H=@^^v+s25wt$XMAM@3nMrTS!!B# z`%I|BMw%Ma$e*q8wxBvx#;mA!s}d(jdD|F(pY>Ro8Ps`h6-Vs58`pKp>lJe&LiD{c zuTS$XMZCkxP$6o6#i=LTPqB#5#hO#T_(Q}zRB%7;*-A2FJ2vFBCZ{Gt<+5F@L6{1c z`J#PLGLgc`?FkI?j;T?wz=jRp5V(VS)^Ow;ygjsKJkw$#(_MIH$n@@z>10+(HsuqU?wy0_W+GD&)`vE|H?+w_ qF5OSJ6PT{S`+X0603V_(AZH2vejkw^p?rYyA@*l5ikt8$eEtuwJLUoa literal 0 HcmV?d00001 diff --git a/bin/Float16.class b/bin/Float16.class new file mode 100644 index 0000000000000000000000000000000000000000..c26a408141aec963b5cfed53242b052be01ab2b6 GIT binary patch literal 4596 zcmeHLTTc@~6h6bP>{0|#RNf{$;Y-0td=NDe0)}J}V`~#0r@Pa3%I-{^okjac{3|A! z=(|74c&1CFBwcnPrNqd~UcWi#%(>6`_50fo0C)*2C72*k+6xskPo9-viojxrov`(g z$=3Q|qr-heV0!zgwp%4Y_6f}IC>a|jO`U}apF}E1VCIF8!n`6dx%RkDU}{GNyae+E z7S4$6YOVAvERe-7AEf573Qu@IeHC>@$c#{ucC~7RJc^%F*RkuU&!kj_HaPu@H;OW9 zdR=}C$p`V0TuMe7f)SWQhVqOQ`0c7o#}Qr-~6y0uWb@>~LD zgQO6>(F0|{o&0aO#E7tvNp67y_3?Z}+6Wk&P_r|$>ZL)Rh)oW&eQ9`$ z>l{=DA=f!z-JGR`c9U6q2e&*TUI#ox0`h|4_fjELoS&+zS}i9JJ(vMvO=j{TiU z;e=^n8;cZnsDlf*oyU$sv})Uyz^rEUJil?vmgnO)E1jo?*45PWuO?cdn0uWVwG*nC zXLO^3p;zt2h7W5eU8fMQLZJQutB^1LE69W4$=-Fa3K*_sX1t__xBTpr=h-Qp@uTu3 zFPO^e*l{ae#l~A;Kc1Cd(rxY~(zj=17TOK#CiAnC<@i=)`oLxCP=Ai#v7Sn@bL>^O z^q$E;MQ^y|nxU>QR(9%4cEy zv_PGHoHA_@6L7rK!O9i^x2h8D^F2I06PWYtS?p=W@_-G%xe3lu2&}*~%;3Fbrz$Xu yPk`dMc%Q?kO+?u*?sq63E#3JFi$D9gdw8|0EQR}cEvG10h6nv`5AiwykNyByBO}=W literal 0 HcmV?d00001 diff --git a/bin/FloatTensor$AggregateFunction.class b/bin/FloatTensor$AggregateFunction.class new file mode 100644 index 0000000000000000000000000000000000000000..9a87c7c186fca061f73c62226fa56d6ec0d76558 GIT binary patch literal 4728 zcmeHLPfrs;6n}$2+Xdy1q9U41hzIac4tf$a0Ya6efT2j@aoBxr2WDs1*;%w-#IIta ziQfHC#+eqS#4fv#0x@!EcW3rD^XC13^M3sN@(lo9z@q{T5O`D(ikTghvC@y18x4&O zX0Vb--*6=hFi2p0pB=IV!DM4$Yi}QYL!h|i3of~NN#MrZ{4RmPRTW?XN(9D^(Q8^O zU4#)b{^_mM7%Opz0rgcFalzd7G}3BMU>HBAUdgSaK9f=zx`*@+-YCkbX+?MqNt4S? z6WbD^PKITtsd7hCJ>*%Y>xS}}av5-Kl_^?Q)OFM-eXE?hR-qlgPwcmVmVLqEnAW+# z*ems*veVS+1G6f;XhLf;2``#P&1fzg7fq$@6n!TWpjDMqS;YJU)<8OI-K;DG3)!>% zSsEyesdKE58NW%5wHN#tS?zbPnC+;Thmq2T?gs}wPI*NTXVzS0p63iO=OnrI>pxKD zP#q)-lW)GFouAH43RnH8n^4Me$TbBkKs54M08+oM- z7G*5W#Z7AN?Pj@8v^FqQx>dtQh%!q$eImKiGPsh|ZOxD&tW$wr$$d`U;gD(W3X2YG zO9!V=JBjVb(P~YX0@I4olk_h8Y*{vbwWq79o_V!n`R6-YE}vUYj9L{c#*}Kb+x2R# z*kG@6(ktbnl?&9qSLL$Be+9YGJJ@?An*|JNnd&c{%UgEz$+GOuK9`TmK6%biwreYH zrE9kE=C&SB3ojiue_z3wa184@^V5Un<*i7yfwSbHT_zH&vX)BHW9)fZ+Ga9P;VYD= znU(eFLiV5tH%H+Xj1d@KI%;T4%~g+E7#&w%bS;jtDwnvKgnOuWT#z9!Syet0yGNPo zXmW@}k!TSZnyXaiD+IinO0cj0^Ce*gw7^FuIf z#|1ljay09Gh2pzO?=y^kZ)3*ozr(n76YUw-5}JhD_I(iUv}dN^u6;VxJ^Q?Gf1Z6O OFby-qMR?f8O#cFwG)|}h literal 0 HcmV?d00001 diff --git a/bin/FloatTensor$MapFunction.class b/bin/FloatTensor$MapFunction.class new file mode 100644 index 0000000000000000000000000000000000000000..23f95777d86ac903c951122b67473d2f57d0d56b GIT binary patch literal 4715 zcmeHLPfrs;6n~3A+Z6>-R78^r@qix6K~I7vK&X-wH55ra4!f`I;OxvgJB#*<_*G0a z(YqhY_@)IZNtazrffzlsyEFTndGr3ic|U%B`33+_;a&+wJh)Ypn%iwui8l8)d0b0X zV1-sC81-OkkMHwE$yICd)$Se!)`RkLAcYe4nFp5^9_)B9x~4-cLB)f~BlNm4+LYn4 zH}&a_GMH$&k0A?m6bs4S_AEAfS7MYrVSdG}V*yu6TegerH{NQ-neD{*ACe`P?KXBL z#GDMPPE*yMrUuBf$~G($2@@(5hLkBgB>&6_bGh~Sv8P6Nmx@zO#I3K zD%)+NKX6jvSrb}UX>`^!8rBHaI%_Ijrx-es5J^=|Wib!l@fNaqal?hLv zb{sp5qcz$t1!fha$LXE-+45}sVoz7s1M_On^8f5;g?w%$wR%nJ1T(79e%EVs5{rY% zNxxEvRv}RLMpeib{}$xt;9&1pC<|CLD$`$jm$&@rlV{nzea;`1fAWH%Y=2@qg^!HF35N=UDpAZI|rHSU~-Jd zvFuPsWTEz;=7HbPsR^(~S7;9|*WHEeQPu75!Q57=tcY+!?TbXvjw`PB(QS+*9?aAS zSiq786B~+nTXPq4OiFNvcI|84(1@({a3wWrUSeWj=){f#P_KqsJ^&-c^%#uPxJ09e z2ebZHD8HTdKf}cLE@q1U9mcJ@)}3*^plP^H@1t;|J2L|}>FH3n=y{udKD~P|3v=UT JxZB0d{sMq`NrM0Y literal 0 HcmV?d00001 diff --git a/bin/FloatTensor$MapWithIndexFunction.class b/bin/FloatTensor$MapWithIndexFunction.class new file mode 100644 index 0000000000000000000000000000000000000000..fdd53bfdd835a3c293a545f81539a2c461552714 GIT binary patch literal 4734 zcmeHLOK%e~5FSI@Buk;CP~J#Z#i8X84shZnK}8@^3W$^NV&OovVyU4bbE^IKwDTvI}KuRYn^!q73O-VT-2(%ofnba`ci!PKgWumUv(b3f4! ztTna@$JqS4=h|Xw)HX&uG;t!8@Z0mmnoWgqdXon=zmA7OYvcGP@*j9-xZtjz;D1P- zT-JLykP!DWtb0w>hngBA&pK~9E>kXbBrPdZ^-0tnw5UT;PRE*<#;-H_7V&zhM4IxB zRG0>}F;v!j*1QpyQD+k~_~x?*XlVi_mKI=&UX8gt4&1o37qP2qX=0rO5$YQM)m8+atXP9HMxh3fCK>GCq>CbEE3MK`oiO0%A?=u#2_;m9tS$ zqY|iKX(?`UbMGk26QZ?-v9bL&c4O2<(wPv+`+bM^vkuh^1;W}B7}Wgd+#R-smA$t=Tl%_F}j=HVV|wY#{cZ;T4ros9a{eH9j%nl-OHR=RVKxpYIM}~ z+WpkwxN_HduWM-`vEWGLI9 zird&W72cBS@x1UdWb^wKTqw`5?T9cxSRUSrTpQR=9@-Ep!~j7_~QQ%PIi^UaSz zXC!5?*cxL3w;0SeH8Hp9Z|0a*-~#PB(#BzMn#}c=Mh>-X9%JernbgeyP}hdKKmbRG z|7n<^afL=#cV>f+P<^=&yocG(1I#@AdyHRqaxmk&LJM$;-lyR7U}h1{(9@&N((@es R0(xg~9xl#Q;nDze{u|ZPQ3n73 literal 0 HcmV?d00001 diff --git a/bin/FloatTensor.class b/bin/FloatTensor.class new file mode 100644 index 0000000000000000000000000000000000000000..89dc88014f58447b132287cfdbab8b8f4a47a835 GIT binary patch literal 7457 zcmeHLOLyBu6uwFvznUg#`U<5FHMGSk#Q|DgOFIV@PP;2-b{SoUy7N^ChE*$yWSaOlQkjlTQc=Uhqm=f~gv007rP zPr#4_2MVS`See?M<0c>`!NfY*AhRa1YqQ1Gb*eE54&KRCaw`S3m@BWSc?piH6=F81 zN}5iC%@(UZ#oRWobi24L#+B9_mmzNKUMas)$gf(0$!BpqnYigkX2EyXk4BKEgBpA-jR3wPaJ339kVPtH3 zm3LjoO~O%W;){E>OFhTjpt`I%R^2cOGaOs4yUwafE$^zFPH{O|Bev}@d6mj7Jac3s zvu2$>g+#@ryhi;9$vlQxUQyYgq6G2G$_kSWPd04ba54906GL64F10mGPStfRy#Azt z_jEa{nZ)zts$o(uof2p%uer{r1XK8=73J-Q^`v!_m}}UzC#}Ul6nm~jrzlUU@+`n0S&)RXzavIx`GWQO%ZH}S}`u*7tbV#BIq^N`o|M*=JVAqX#P z!|7|!E@1qS48*thKzl$>{%^PjGt7Zf@)Q_)K6ai+eggI}JWGVF2~sA9p4pLIb=M%( z@K_&Zip^+^x_wX)MCsHbsrL~b$eYM#Z`kEM(zQq}$8DBq&7yX{=#9m%jkT!X(@1hAs3_t4gf-3!zF_ve49ZT)JzGaCCHIn@z9SA)v`d!`L^ z=5h_@%$tr!Bi=^CN3YcM7!|!vrc(py8VKZnDh*VN{}tq-xY?&u_!MB&wIk0<@bT8a z`}C{qfM@?v{VgA`m34e;_X$^_VQc&wnV8&Rw@S3=W*G!#KO`b+U^ma9&`e{`gRo3& z-LV#^Ojo$oen1th_Fb-2VYRRbW$whF&=lEn}Ts3TZw_&YPx6FHs1e2Z*X>lQzH*ULfl&p4zc7+M-Y_GE8p*7odXYNMEBzOjcPSa-*G=$ zTfy8(gRzR^7jHvDf6iwVr4R<3%hhTwtr14IPsJRM_psNnxNk~eg+(@zM04uRvLiHy z>mY8;$N5s2#k580ioImwft27PQg!IXUeVSVz7ymrgo7X@5Ncqlh|)|A$}CUEBv{=0(G60Yg* zVDiD_k+0#{k3Q}h{Eho}BshWpIRm0l`XpBdr{J`|o&nik&%(67J_qLz8R$BXxC`(+ z%6$$Qn8AIn@nVO@i`^PWzVtN?AvOt@;Kh*K2<`=zisZg($pK_xc1w@Q;QAh}8r~np NF8BZ*!iTT|k{OWKqV@s|ePX1u#Z)3Sipu7H zWdBNm4%puJM-4kl#bUQsq!dnyVSS)PiNE6=k9Wu8{q^_rKLFrs*l9w;f%X0Uo;N_5 zD!nU>9yejZfsG@6%jFxV3j5|P)#Sm|*eM=?tCr2`9+$28FP zPAL0E3pt{(<{S*g zlRoLb1io`XvOQ1%Hla;&pGdc>wbILQ)!F#%N2xJY(J=WkSA|CU5N82n=m@?~FF*kn54A~3*n$Ye~QfwDnEaF6I!;XTd zGo*Y&5Np;#RmyV)n01m`^UWV9Yp&$~hRckIYHi6|;Kcbj?UB|4E>Jy>xCv)$8Jjq> zOQY(UL7qrW1+%U+I6_^4Dw)V_^>|W2T5C0>XYb^a=frC&NvsflPAu<_4c^a&lrvQD zI~C}*>~QG}$6O1WSQM~_Iyi;fGZ(s^p;xmsBM>xov& z=f2B~dJw4;OR~{P*Xxf{gR{~}w^fT*Ezn-1xT$4}{}p6!cCdF_bP5>MveaLS%UgBy zsj}>1o{L9SOI|aS9Z<%tbe|G$LHT%Dcqx{-mr38=k$GentcTn$50)24QECHcIfo8- zl%dDRDl3n%ue+qjTm~xMM~Rw~u1{C83!CuHDqMzl9oX7=wdi3h8|$8s_(K*Sq8`}T zVhb?J=h4B71M0=k1rv(Yfz6^$a#HJ|8q7uyO{juLTvPpqwvu3OUuD|IqSCYC*=yS8 z9ea5vIl9tUGNoLHsy^QfT88#RDj9u3^_wXrH{sK%D$-;0l@6M4bLwvqs~lMEi8Q5J z(SQmmB*0REhR?u(OH`^_gf_J$>b0Q>%lW$nZvI|@)%?Adk2}=A4C~N<4eH$^YD?w* z4x2x69(IG18&n7Bf3J=LeN6YLdaaie*iHohF<^x literal 0 HcmV?d00001 diff --git a/bin/GGMLType.class b/bin/GGMLType.class new file mode 100644 index 0000000000000000000000000000000000000000..7d727fa40fa99fcfc0bbcc76318f4f64a73c9216 GIT binary patch literal 5608 zcmeHLZBrvf5blNWl7+iN^yKh$#Zv(_yaW)BJLN#atrrfsgjA^?sL5uM4D9a2*$HPX ze}bR=D^_Whe)mUN*OMI~c)M)40_=*VVH=PxyWBYp-&4B}m8NU!+z%x2Wr?^=+6#b^ zFjS*bMI@B$ot(nHsdZk#5Pe|4jgt^<2*Jf5d}P3Td%mCncaLbra=6!EE|HA;RzvWz zOT9amX~J!o8ir~380p?+K9gSPBr1qKWw-?bCh`m2I_b_JcAw5K}5F&1IXwx>#iuwab*a<&Hnx{y{}Er<9% zmsXit#~w>=5lhATrAS;{igntKkfmanQ3;j_6D%U08OxRy3oPbWn7|x#TNvsp71Vcd zda2RH_wSqdtzu;ymjr=TWiAcObcB^+UGOJr&Rn*k4ZrDKwv8}FF55~wtuNe2h2l`D zA!`ulkkqI(feS^(b%{q74koM$r-7vs%OldMTN39B{h@)Q-`Qg#9Af4*xRBOC@9lK?f^2P3kBe4;);#JbMdyM{uC*jx zYgX~hkPxgh1EimpddfMJqb4!}zFP2@NNA9cP z%zr*=UFF>UrsV4`4`|G3v@`Vztw7SKcrthd*K5>=9qDq|j#q#QU z#Lj{9>_hExNS?HKGk%SIUY8ydzrwvu>Qg~5)@KJ9t1)HVgj6Xe#|745u%_{~0k2u*z{68E@L8fiXfSGe>Xhdj8 z!z|2c4%3MoWLrZ|o7ptX>wb!R3fn^N*=M<dEbM*Op`q_s jL$@4ESccEFhGg%5KK8yB?zCgD0(TJszQkV&_1t?30Moyl literal 0 HcmV?d00001 diff --git a/bin/GGUF$GGUFTensorInfo.class b/bin/GGUF$GGUFTensorInfo.class new file mode 100644 index 0000000000000000000000000000000000000000..4718ff14ca1d901392018fe80bf8912d611cfc00 GIT binary patch literal 4978 zcmeHLZExE)5I%XH9V=Pmy31a=H_mIjb{|{}>!-Z|YtXnZ?6#=g07E}95^Xb;NROhj z`H$?c4A_9}`+n50hgPxJs}(tglVVsuNF=4_c*o-%?|6Uy_3Q6M^bLJhrIJUN+U>`C zSKMnLRH98s4Rw{u9@P)|5x*I6HM;rW;7|nCqq5?$@Tk!}{?)fes?k>-`Js$4fz> zsPv@c(Z*;LM}z4E6n?ke?sZ)s$ci2g6M^Zxdl-Bzm9*b_)V%)utWP?}boXxTLx5c! ziYi_7X!}@%JH}|UL6^Mx&yST6iH?p$$O0WtWW+55ViTheA`vHFGQZ~NSiqIimK_N8 z58i6VnT3R}AbENjjKxet%;~V@ETffK#u9zDSjRG%FsVXmU_8+jsvZg>RDjJH8XaT& zLyCVPYXuQc5;l~PNc`FoE`zbrKXPp0Su?t$()g@-WFB+YTxL$Ob|#^~R=F*k@Zc#Q z3D$(0wW5f}{MKQUg<2%cIabVVFlH9^B7T}+_va~^*%r%qqK##T;nO8jz9fhW>e8>$7HP}u-{k~33Aog&%_Gq)~u4-Sj z+yx%9bX0(H4e}iX^}7;FF~NB1(N;%cUAyj5E|MyJjJk_s=h20Kmx-<{l!+dRK%1~i z*A~8J#~5bq$s|FoXn-0EScD$(0`SAcZ*cktet^?iDmE@Si_o{MEL zA}}GU;n~Dfq4)7F(FgP)TB48e_#pI%Q4^$}VqC%hPv|OLN56#cH_%>&*qP9o$eF-1 GasLJwhkK_0 literal 0 HcmV?d00001 diff --git a/bin/GGUF$MetadataValueType.class b/bin/GGUF$MetadataValueType.class new file mode 100644 index 0000000000000000000000000000000000000000..057ae130dd8f5831cecbc287b840be6beb67ce72 GIT binary patch literal 5243 zcmeHL|4-XS6n~e7KwMTRU0a~rdZpb4-5T10s%hOO0s?BufrWw{nXB!dKy}jxoelRkgt;Q^d#w_M-qS@2D z?*GII5F3#PRcC**PGIi)Y|BdD_`=uU5xBkRym76rl`oE-+xF4{TCyQMbp8&3sW*sC zrKFmGkID4U`$F+Z1}EI3t_(YVz_c#~?I_s{co=<6t+L^xE)zm(+T`>fyq1(vjj??X z$%;#(&HE9eCWaN0c$GNuQsP;mwx)hWec|~Eb2I2+s9Rid;o{`9lninFLl^(^XvGa! z6w#I+@W?8sXlb;S{E^`lUbLc3(G4$JN1V_Xt);&x&RvPeajMLeb(s5#9dWvV%d8Rv zEM%+43)GW5qGn-*OuKEWF<r00|(B>(<{=ffJ+R|OQzc?Q$`2Q?95&D%pk{)bdEAxXnw?1 z4k|;CRj#p44(mwXWS+f)E}xUG8V{xF)%j7#MP78yN##0Lkn7zR)(knp8Va<^=I=}i zCrtUKu!v#1${V8XH1<49tGCS&m{p9P)_2*q<>mOhwa$^L=W3k!Z)e&_Yp&YWawCut z&!|QRmtMUWX`WV2TIG>+jRe{XB-111;(rBMOW*9RGM)mOE0MWg;>%n9?vt0FbiJB#*GR#RmHJ|}Q*cvl3QA_T51E@7L-s>`l&`4(Qp30!r| zwQi+iF8gS=EnF!gtc|b$c;Tbl%5C=uOxgltuwgFnJQ{}z_GnD&iNN)grqvSy*9Q7F zc-ck)H9v~5!_&al3wk!O!z2AdMtbcrpjp@on_8QLF(?5b9Z%>)LdyxY5_&bElL`GG zq1O^RmC)&gUQg(Zp)dnC;6tSIa1(AJy#fWCv{|%c4o9mvE+VylgZaamkA8tq{=iWI z?%}h97{K2GJ}3L{7ToX4EW-o%G?DNSB^X>R;j@2BAp3m@g}$sCu$b@}&BOT)Q#6mk k63QvSL-+zIz?b;5P!54du)H=4PjOtt(PLP_w*ox+8yYF0cmMzZ literal 0 HcmV?d00001 diff --git a/bin/GGUF.class b/bin/GGUF.class new file mode 100644 index 0000000000000000000000000000000000000000..acd7ab4c99c18f596da6e827bc798088124ff367 GIT binary patch literal 8126 zcmeHLYgZFT7=AaPA@K%SQEM+Nr3zlKDs5Fz3n9elhENi)+FCj!ld!Pajk}v@diw$W z(r^6{{od1a+H=}-`q3ZLpU~51c2|;+35hvgPEY*+!_K_(y!V;mdGgP1e-P1i`aVn{ zh58eTm4z_%D>S&ts_cTn%;JUg`X^JOvh!WyUL6T?^{?& zBorE&k1x!wXxX({EtyzM#TT=EP@pPwG_$g_lwQup=hr--)%bEInO@8&v{%z~$DLLv zlF^GMb1OCnjyE}@B~6zXxjlUY>w8M9sOJ<4SGn!zmZ{J_mz$1d$E=D83nR<`K#7aL zhf3UKdFHaUt?F9NUmtin2PiGY%78p8#u=^dZN{~AvpC%_;XEX4F0rY+T5{>D$lDqt5ntv<{~9(*|ydVUUIIf(TLcm=9p<(uDZ_E zZF$#Hnd;Wc{Iy8CxMVlD7a>)|a8mT)q+f@UcuuNGSJfR=H}krURyAq}H4@Fu9FkM8 ztrET;R=CvygK9JQbu+=)gcTCy9q^@t&bFIrLDtdw4~4!@aSv=*-^p1YDfN2)~1 z$}G3Vid-ESTB_=+f_I7TM{c@ zk%%a3-Rfx1Gl+>M=?d@p3z}Ve@_&=7xVq6*N?r>#+>gy2DLUXKhG&Vn8ASKkTCs+yXAQ&9?pGw_NAb zr&DG7I4@tSv*leLWvh5`TXqHyZ~SlGAzTX;GbjE>W`=OsF0fqt!_p7T%h=Jj2A<^} z@)#hE)vQYUGqzWkmYJEiN(pXqn<3V_2RTZo>D+!Aqw@+K8E;^5{0^TM%*G*2H~C_v zw9f6UI9n7N)~p;eR)Y&FnCy2qbkHq(HNoV7G}%|=ZYm&^z(I{q1QgPF|F14dqyhR! zp_99lC*V%Nz(HM|&GDF@bL}-H60O`%1m{&g1s2Cp=-{{}UUt(HPrZr8ALn>kl%o@- z>+mj_-kt&Hw7oT1Dr5WLxV8YwAhrQAhZ|lLPb`CT(@Q*QR&_^57-t2~p!+OU?X zl*?dzoV(06!KgWi;GU`=3c*I%oaH@>!2v0Bd#3?n@;^OeGMsbaD?ewgnMV-z`2y}IB0JXM29{gK!NTbqBm&|?ZsCZ zUm+U6cckGvitl~2AL|Fa^@ET(gmoc17>q-~I2??JgYgYIvb}Ev@<$uKkKy|`um#Qu zddnN%ZdiYZhUr~WF+WTvgK;z%-}A;1tc}t8&~OTWO~D%lWAt}AeQ$W;S33JAzCtvK z-@-e>&jtJzoazD-GxK5Ru&j!Tg~Za})yCDNz_DMDB28f=<|ef_X@ z#=|<(Z3SW+SXa< ztQ2dRGE%HvV;{OI#mdr34_G&)SgUlm2dtPB>odC716ERsb)P=(0V^%V`hp(xfVCpU z`jXaqz`7^J`ifW&SPvvv3awKPr)le5Avp;{>k@=M%A=}7#HoOB7=IOkr{fme#AtkS ajK0JC2=0~=Sva*Hl0y}GL^Yf&-~0;?6~cG` literal 0 HcmV?d00001 diff --git a/bin/LICENSE b/bin/LICENSE new file mode 100644 index 0000000..482296e --- /dev/null +++ b/bin/LICENSE @@ -0,0 +1,43 @@ +MIT License + +Copyright (c) 2024 Alfonso² Peterssen + +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. + +MIT License + +Copyright (c) 2024 Andrej Karpathy + +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. diff --git a/bin/Llama$Configuration.class b/bin/Llama$Configuration.class new file mode 100644 index 0000000000000000000000000000000000000000..e7e45a5cb008262dade7186fd97e8b05434c19f9 GIT binary patch literal 4918 zcmeGgU2oh(aGa*OoRj9Ov{1gfgaF~?s;Yfz0f~kjJ>evX3qka4&z?JPYVW%1b?EU! z_$x>t!8<<+F>AZ@BAsiex}-w%r1N-pXLn}j+w<4ozx@FKpTl+w<{Y@{MLgzPJ4z14 zDAU{sC0j7>z}hiC;kP0#N4E|J$LJdeE(IcX!09>A4n+{4{K}43WEKxl9}GP{Mx8ov z<=MnTNwq3I^Ip}M3-36D#61L4R>HMB#OmZ3!e!o%olXXcCYw7>UKXpa$tT(1=xZ& z9aw#S!(FYFUW6OY+ArTrjj4)GFkrrl6A|SiVTo3Q2;=k~bK7b9p)ISjS>iIWP?o6s&<`+3vo8!hDMys6|)F>@jTlB%rA67E0dBV?Q8 zW}V1Jp}WVMEKry->sT>2e#i{j3qDOq`;$913l)nvQQENM;PDhLUlEEmYoTiSIRlz? zl1Asv9#J;D$^Q*6Ga_oFlGlh6`SG+zS`WBD@qEioI7MY_B4<}d)iWb`A~iL{dQ|C* zP}g8p9OSn5cv7>q(QPVo@8p$dL~9RYMU@_oVw82#nGwkcV}lQ}A=L~u!g?X1+qTP< zC!BCCY++HL9q8Z%)K25hg0+5VQ(#pwdYaxv^Hyi$ua-McP0g!?<-Z(jjePFQ%&476 zrC3poPP$%yoEn@~PP*+zv>G9GBgIW4Tl}wJ?oAK&Zkw`zK`kr&rTBQOk3MylU7U0A zSoNGY3}r`DaVy=Y!dp;1UKL)7Yj!i~+qMCZ?1lA^`_;kn;&xQpz*+K8-maj&hRUjA z?8{#1J1zqie~l8U>!NBhlndA4on^QR?@~Wy+k4)*C_MbW?QE=iLgIejj5)Ni#eofv zIxNvqnV`zac@qlTmGP!@e(qC)rLQvWW0$_99aze7?sP0Y2bO!1nBB2o+L*TBBL^<$ z>(pd9)jy&}%s!^(p-K(h2I?D8ziA29;W8}H+d8yLxLCq=3EdJdm2kO)S70UIw+d@H zTrc59zD{i*lFJ+Pyhf{ciP{oD_jkDd3|6HSPKsjvARQ$>ygQQjLf)T${rWoqd;?$9p+;cY4Ozsl zb__GT4hsa<57?O94w)R>e$qSOo*_UE39Pz1p<<@XWvujl0=2^)fis7_FR>ZeW?-A- zIX**t#`uRB9J?5*fiN+Fr6HfRnHO*Z=YIMRGiS`ggy+4>A*vFat{QTQoOY4N*Fp;O zErG43o2lDYvM&aSW=1G^|K>h{g|_l>0+$J_y_~>9t(9Ja56Jq9AEf573dh{1o{B~S zh2T&+(yABoDE^8%4Lgo{OiE>FkJEqgMo~u1WW?V=iq@qY@N|W!UBi|&o>pc&GuE?3 zcMTOW719?P?JJz%Qun#$(!^xNK1U3a0 z9Y&AJJ8j*{Z2Zk?=c<``HM9KJQ>~KEeU}*34pqzxPNUPV*O|nI&pJ*zjY_gAfztb0 zC0l%3kbAR(z0<%fV7Qir{*qnZ%A-%2WoLX&A62e-#Zb17CvK%Xc<>f@9xnDfCn3+;q;pLxZ>^7KX&+Q4!0(7r7`GL!ZEx5-uEPxi7iLsf>Tr|5*|Y<>A1S=x|5OYXcOGNK z=8=jG+ySioV0~#7&cj()#MXJJ=X5Ejjhs3;UC!xBPFHh!E~jfbT}NJ)-$qJNUATzf z1fNZK59uXr-9za$q|R@!_2b6-zrcro;8zW<;CnH}5}?>#N!t#50^9g?20q1i4X(m9 Xq#M|}4o$cPml4&3&yaqe_Ba0qn`~uc literal 0 HcmV?d00001 diff --git a/bin/Llama$Weights.class b/bin/Llama$Weights.class new file mode 100644 index 0000000000000000000000000000000000000000..8fb4bc8ea60c0527746047b5bc9b783a61e8af0e GIT binary patch literal 5192 zcmeHLUvC>l5T7$?9AA?-36w(lw}b*Ie;k$ei2@Rh8XC!I5jH`H2WxXTwl}%kb@ujR z{6+XGNFag4BOeMedv|hd$(OrSPAWtnyyLz7&Ccx1&g|~|{m*ZI0Kk{9U4@DRE6sq1 z{PqthdVLdBVZnj5BYw)a11@{pPY;jKGY;G^>KJ7Q!$b6aA$uLe4+FH^yMf}SjWSaD zfdi{Lj5^$y&M=veKKzs-9>(1+T0~`da`tu1R~a7Lp;OzaY?^LYj;E;%@7kfyY;%t^ zv|_qK@?ea}G#SfT>1sUbcp~a(>imO)X_w?W~un zd*NQDRC&HBn-z63t?nGqqIQ&zRd~aJ`k4$q*r42jsk7sE4oFH~v3stDk1ztYNcZC>)5EBKt-5y8=VZj)+jPK>pJPyO35k(N}i{s_Tqm9xj#GE zyEQrm3~HGhFX`j0IQtas>~x;1M-^*cGL;?Bja%s!UAzU|$Me!ly3E~JdiIUX1G`|| zg z%0(LC4{T+l-V_p_#8iLM?X>i?(NrD}4zdF(`?z5Gf~q?8=2TUS%1&-e#oEJNdP6&K zJsG{%u#y~D-jk%}j(uYz6~OK|a4i{kpgOLKeL_qV34)mRMHJCHwM`Wf61emPBlB2A z2JV6bFHwDM71rSzEYiPqsKQc0Yv3mIdPbKsx{}e=3|G(kYZ+b7=mxx;@V}DL8yS5y zk>il$oA4U7uM_G%X;CNY{tmZ(+<5a>c>7Q4Rp4D}7YPIO+oX0m`R~GeaGQDy@IJK_ b_y9g6>e844TksLh_-Qigz{k)?5L^EO=HJJ% literal 0 HcmV?d00001 diff --git a/bin/Llama.class b/bin/Llama.class new file mode 100644 index 0000000000000000000000000000000000000000..aaeef7052c54c9f6cb134366521d463c73c68553 GIT binary patch literal 5759 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 literal 0 HcmV?d00001 diff --git a/bin/Llama3.class b/bin/Llama3.class new file mode 100644 index 0000000000000000000000000000000000000000..2c47d0df3e46d5c00fa5406f1c695e6ca6f9dd2f GIT binary patch literal 5033 zcmeHL-EZ4A5I?4AY^!OLr5{_{bz{?Rb^G8xEKf^UU=8BIgE9|uW?iE;JwZ2`ulZkk_C=VC|T8S8Ju~aEYw-A1}aWO#H>(~CR!atJT_lbui^M;z@$``9&kFNw~8`q#|i&HQiRL?h))or4#Sr7 zQ)^eIaSoa-+Obp^Dr6`$Ix-p~&;zcy4A3{!E-j`bQ5<#D{{MQ>u{5XiW}-;K4vx;QH!qR zFA{XkJjZ5+zlam1Ej=F zofA*$J8#>{V*LGD=d0YhnnnKGnO14feVbaf6Dh+Bj*9bJuQxW9=N(+VMkQU9h}w~2 zwo)wqS19-LlfBo#Dqy*mh5IGDSCwaAoKeq@qcBj;QmpzcO1aO*DlJaLZ@Z+Qm<(0?9hY1)#QJoQ zJ*dOwRk#RO2wZRa$DM~Pc(z?}wFXqEk7E0fqr_ga+JeW?Hsq zvZh+^cM}&fCNq4(W~@#F+r{fSHd$gOB!L^vU-Osh?Y;TngV z;U6dA5lXm--%P^w90^+!2}={ckKvO!K4(!eUw4l0<{9|@nDI5>7Tm_we2RLOQSY6Z m#m8&Tv-tH)!Ugyod6$49f@mws*u>{PTJr$MD>!opzW5h@$!@*? literal 0 HcmV?d00001 diff --git a/bin/Makefile b/bin/Makefile new file mode 100644 index 0000000..7e3c025 --- /dev/null +++ b/bin/Makefile @@ -0,0 +1,56 @@ +ifdef JAVA_HOME + JAVAC ?= ${JAVA_HOME}/bin/javac + JAVA ?= ${JAVA_HOME}/bin/java + JAR ?= ${JAVA_HOME}/bin/jar +endif + +JAVAC ?= javac +JAVA ?= java +JAR ?= jar + +JAVA_COMPILE_OPTIONS = --enable-preview -source 21 -g --add-modules jdk.incubator.vector +JAVA_RUNTIME_OPTIONS = --enable-preview --add-modules jdk.incubator.vector + +JAVA_MAIN_CLASS = com.llama4j.Llama3 +JAR_FILE = llama3.jar + +JAVA_SOURCES = $(wildcard *.java) +JAVA_CLASSES = $(patsubst %.java, target/classes/com/llama4j/%.class, $(JAVA_SOURCES)) + +# Bundle all classes in a jar +$(JAR_FILE): $(JAVA_CLASSES) LICENSE + $(JAR) -cvfe $(JAR_FILE) $(JAVA_MAIN_CLASS) LICENSE -C target/classes . + +jar: $(JAR_FILE) + +# Compile the Java source files +compile: $(JAVA_CLASSES) + +# Prints the command to run the Java main class +run-command: + @echo $(JAVA) $(JAVA_RUNTIME_OPTIONS) -cp target/classes $(JAVA_MAIN_CLASS) + +# Prints the command to run the $(JAR_FILE) +run-jar-command: + @echo $(JAVA) $(JAVA_RUNTIME_OPTIONS) -jar $(JAR_FILE) + +# Clean the target directory +clean: + rm -rf ./target + rm $(JAR_FILE) + +# Compile the Java source files +target/classes/com/llama4j/%.class: %.java + $(JAVAC) $(JAVA_COMPILE_OPTIONS) -d target/classes $< + +# Create the target directory +target/classes: + mkdir -p target/classes + +# Make the target directory a dependency of the Java class files +$(JAVA_CLASSES): target/classes +compile: target/classes +default: jar + +.PHONY: compile clean jar run-command run-jar-command +.SUFFIXES: .java .class .jar diff --git a/bin/ModelLoader.class b/bin/ModelLoader.class new file mode 100644 index 0000000000000000000000000000000000000000..005f26169c2f1b413f73e9ee6c8a86de0d10034f GIT binary patch literal 5998 zcmeHLTT|Oc6h3lDdz$-U47pvNooteEhp^^&ZDpOBQiJo2+Gmydxvwhsmknd4I-% z7#f^1w$ODcY}PDmFf_}VD+!Ye#PMhbvKkCD+wzJAC!f;q%`_U7`|}wX)W9uF+t>4M zH!r(+LA&`){I$Ay$LZ#+Vt4WDC9%Yo+K-IK_?UnEVA^kwb^YF>iA$4@yZSVu+z4iD zQIQ^uc9-1Ipow^QtT26Xsa{kq4USFO%$7GbI8rDspnB`Vtc7m&O|P zJ)|oimQ?PQg52xj&yqeTb=%c#X4wMM)9IkASE-=P#Nez7-opMj9=@~mlIalF)mLqY zy18r*EsZt7za<#L7p5iGzLt;Jsy`>w>I7%COAHZeCyljS|%Nh&0!9iTOewwlVrq#z+uiyVd4G>g(1<4=WD|qSD&teeKx;Of8Z`^7bFd z63*oRhV!KDBnrt(VB~zV=qW&OOfPbzP9B)#RW;+>(7vvvjMvg&oLgiRuB zb+HIwHG$XbgxLKst-hv?z_`ok;o8e>pnJ5?kE68f^%|4gKQ$SL|V%JOX@z#I$>6h7ooP$U8w>;ri zwtzQoF6wykw(&k5x4i_@yyG!beIpY`O<1fFGk&u?I7Vy^?ByKt>ly~>a4&w3ecmbE zC(PolyOdEu(AT>=IS0dVb`XZ(oCaqLJ8LnjvT@R|8J+i9D^xVp-lB>&+$7GzlLP9> z;DB7SU98<0k$Mo;a!%kbU@ahi#l!Ejjs~X-2BuTFXlxB4EL*pmj7U$Q_-j65YNs`k zk>G|=zPVja26PQB?p|uaN(-t}R{4fvy{cfSTU>drXc+2q5v|Ep9-6eRlFv=UdsyR| ztA!)z5K~YhX@hT2W`9S81{Z=kMW<9W!uKff_FkqGFJ?%Y{keygG1O~mpcjn0cdJH& zGM9@AlcIzE@ORT-2sNKklo=sNr?whlUMS2NxU8P8v2t=K{mjQWLFHOPga1@SVFYWg- z*w01!$038`LvR8SC$V)ESsMQ5eu3dHPo4S+&iv-{&f`-_0sOs+&%po%uc16Z8E?Rw zsOv3kr{IDwX>^;Uw|7cPeeX+3AtwtLVFa1)V0!>1zZ*(WZv$I;N%$d@kb(ChA6igI z$p0hcXQ2qAs9E`-zvX{Mcw=xW)cZlm-`(!NBK#7Jhy2S4`F}_F6L2M|-A9gwycA60 YOj8)|Y5X6??D!D9{xMvGGRE!3zbIsOz5oCK literal 0 HcmV?d00001 diff --git a/bin/Pair.class b/bin/Pair.class new file mode 100644 index 0000000000000000000000000000000000000000..af9b0f3a08d5a7917a933c94caab88de08c4cd46 GIT binary patch literal 5014 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 RA?6fj02JXPsAC>}`VZu%(enTR literal 0 HcmV?d00001 diff --git a/bin/Q8_0FloatTensor.class b/bin/Q8_0FloatTensor.class new file mode 100644 index 0000000000000000000000000000000000000000..05e29da8d94204d02eb2e4c8b2d48566f3a9a6c5 GIT binary patch literal 5671 zcmeHL-E!MR6h2Cm*jCacO({?cbQ}Kc0#2a?3ND>VOB~E71Y(mJt}+{GZEq^=n$^l+ z9)vexm?<;#h8uVQE_oD&vrs#$P8V1ZP=Fpyu^y*f#-j+%uZuSlrT;H|eVzG9Fq_l%F?@N#6U=c;^(=J{0 zsc5aPDP@u?uD#aj6helRZZM!fQz= z(Y+3P0?G1Aqs?Lu5#z(M@qKw~Z=bn3#h+zT(}ahF3y&*=_&s!WlPM-#3{F$Y0H42# z@S8`T?2^DUz}HCJz*2TJnFxMVk9#h2#maZ+#rBNK*l4=$_B0Zl{Ed^sU*Mv+9XK4iD27 zw0@qN(5%JO2$eF3?7}APj2JqWHJNK~zp4|GHL#x>q5OnI-s@?0FKXhRVT8P)K)YZ* zXEJoD;$~x!z_ye(MA{&B5~{_!-hZiXqjG%E8)xk~N2ac;N#_4O)yAs1wMfhRz6@E$ zZnVGj>b+32wC$u_7)#bzp!i5ORxbWmkelg~ym@n7jh=l*Wp=`I_NdXC zk2#g?;Er3WI&QoCa&6;>4@7PIL>yqx=bnVu}U6Zu;AM8 zh6(mdEXapU$8(1TGsRlfD7(-)c$H+D1y_sCK+;ueB_|$}yhZH_b>0$GM+z+~9zowp zu$8;VhfSNDvtYhhayB+Lod!N3S^iKyc7%$xQWcH&B=((5(%;H|@!SYl-kZepWrAVYKT4r-A$H(;y`;Rc{t*pfR3OE3eo_-_evkjMLFD1eRkJR;^`9nvgbe^2Ap;1LDSz_WM<b?mjWmmYNo6ZSDT8fhDBEu-Y&Kkn*D;u O9> literal 0 HcmV?d00001 diff --git a/bin/README.md b/bin/README.md new file mode 100644 index 0000000..38bbc79 --- /dev/null +++ b/bin/README.md @@ -0,0 +1,154 @@ +# Llama3.java + +Practical [Llama 3](https://github.com/meta-llama/llama3) and [3.1](https://llama.meta.com/docs/model-cards-and-prompt-formats/llama3_1) inference implemented in a single Java file. + +

+ +

+ +This project is the successor of [llama2.java](https://github.com/mukel/llama2.java) +based on [llama2.c](https://github.com/karpathy/llama2.c) by [Andrej Karpathy](https://twitter.com/karpathy) and his [excellent educational videos](https://www.youtube.com/c/AndrejKarpathy). + +Besides the educational value, this project will be used to test and tune compiler optimizations and features on the JVM, particularly for the [Graal compiler](https://www.graalvm.org/latest/reference-manual/java/compiler). + +## Features + + - Single file, no dependencies + - [GGUF format](https://github.com/ggerganov/ggml/blob/master/docs/gguf.md) parser + - Llama 3 tokenizer based on [minbpe](https://github.com/karpathy/minbpe) + - Llama 3 inference with Grouped-Query Attention + - Support Llama 3.1 (ad-hoc RoPE scaling) + - Support for Q8_0 and Q4_0 quantizations + - Fast matrix-vector multiplication routines for quantized tensors using Java's [Vector API](https://openjdk.org/jeps/469) + - Simple CLI with `--chat` and `--instruct` modes. + +Here's the interactive `--chat` mode in action: + +

+ +

+ +## Setup + +Download pure `Q4_0` and (optionally) `Q8_0` quantized .gguf files from: + - https://huggingface.co/mukel/Meta-Llama-3.1-8B-Instruct-GGUF + - https://huggingface.co/mukel/Meta-Llama-3-8B-Instruct-GGUF + +The `~4.3GB` pure `Q4_0` quantized model is recommended, please be gentle with [huggingface.co](https://huggingface.co) servers: +``` +# Llama 3.1 +curl -L -O https://huggingface.co/mukel/Meta-Llama-3.1-8B-Instruct-GGUF/resolve/main/Meta-Llama-3.1-8B-Instruct-Q4_0.gguf + +# Llama 3 +curl -L -O https://huggingface.co/mukel/Meta-Llama-3-8B-Instruct-GGUF/resolve/main/Meta-Llama-3-8B-Instruct-Q4_0.gguf + +# Optionally download the Q8_0 quantized model ~8GB +# curl -L -O https://huggingface.co/mukel/Meta-Llama-3-8B-Instruct-GGUF/resolve/main/Meta-Llama-3-8B-Instruct-Q8_0.gg +# curl -L -O https://huggingface.co/mukel/Meta-Llama-3.1-8B-Instruct-GGUF/resolve/main/Meta-Llama-3.1-8B-Instruct-Q8_0.gguf +``` + +#### Optional: quantize to pure `Q4_0` manually + +In the wild, `Q8_0` quantizations are fine, but `Q4_0` quantizations are rarely pure e.g. the `output.weights` tensor is quantized with `Q6_K`, instead of `Q4_0`. +A **pure** `Q4_0` quantization can be generated from a high precision (F32, F16, BFLOAT16) .gguf source +with the `quantize` utility from [llama.cpp](https://github.com/ggerganov/llama.cpp) as follows: + +```bash +./llama-quantize --pure ./Meta-Llama-3-8B-Instruct-F32.gguf ./Meta-Llama-3-8B-Instruct-Q4_0.gguf Q4_0 +``` + +## Build and run + +Java 21+ is required, in particular the [`MemorySegment` mmap-ing feature](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/nio/channels/FileChannel.html#map(java.nio.channels.FileChannel.MapMode,long,long,java.lang.foreign.Arena)). + +[`jbang`](https://www.jbang.dev/) is a perfect fit for this use case, just: +``` +jbang Llama3.java --help +``` +Or execute directly, also via [`jbang`](https://www.jbang.dev/): +```bash +chmod +x Llama3.java +./Llama3.java --help +``` + +## Run from source + +```bash +java --enable-preview --source 21 --add-modules jdk.incubator.vector LLama3.java -i --model Meta-Llama-3-8B-Instruct-Q4_0.gguf +``` + +#### Optional: Makefile + manually build and run + +A simple [Makefile](./Makefile) is provided, run `make` to produce `llama3.jar` or manually: +```bash +javac -g --enable-preview -source 21 --add-modules jdk.incubator.vector -d target/classes Llama3.java +jar -cvfe llama3.jar com.llama4j.Llama3 LICENSE -C target/classes . +``` + +Run the resulting `llama3.jar` as follows: +```bash +java --enable-preview --add-modules jdk.incubator.vector -jar llama3.jar --help +``` + +## Performance + +**Important Note** +On GraalVM, please note that the Graal compiler doesn't support the Vector API yet, run with `-Dllama.VectorAPI=false`, but expect sub-optimal performance. +Vanilla OpenJDK 21+ is recommended for now, which supports the Vector API. + +### llama.cpp + +Vanilla `llama.cpp` built with `make -j 20`. +```bash +./main --version +version: 2879 (4f026363) +built with cc (GCC) 13.2.1 20230801 for x86_64-pc-linux-gnu +``` + +Executed as follows: +```bash +./main -m ../Meta-Llama-3-8B-Instruct-Q4_0.gguf \ + -n 512 \ + -s 42 \ + -p "<|start_of_header_id|>user<|end_of_header_id|>Why is the sky blue?<|eot_id|><|start_of_header_id|>assistant<|end_of_header_id|>\n\n" \ + --interactive-specials +``` +Collected the **"eval time"** metric in tokens\s. + +### Llama3.java +Running on OpenJDK 21.0.2. + +```bash +jbang Llama3.java \ + --model ./Meta-Llama-3-8B-Instruct-Q4_0.gguf \ + --max-tokens 512 \ + --seed 42 \ + --stream false \ + --prompt "Why is the sky blue?" +``` + +### Results + +#### Notebook Intel 13900H 6pC+8eC/20T 64GB (5200) Linux 6.6.26 +| Model | tokens/s | Implementation | +|----------------------------------|----------|------------------| +| Llama-3-8B-Instruct-Q4_0.gguf | 7.53 | llama.cpp | +| Llama-3-8B-Instruct-Q4_0.gguf | 6.95 | llama3.java | +| Llama-3-8B-Instruct-Q8_0.gguf | 5.16 | llama.cpp | +| Llama-3-8B-Instruct-Q8_0.gguf | 4.02 | llama3.java | + +#### Workstation AMD 3950X 16C/32T 64GB (3200) Linux 6.6.25 + +****Notes** +*Running on a single CCD e.g. `taskset -c 0-15 jbang Llama3.java ...` since inference is constrained by memory bandwidth.* + +| Model | tokens/s | Implementation | +|----------------------------------|----------|------------------| +| Llama-3-8B-Instruct-Q4_0.gguf | 9.26 | llama.cpp | +| Llama-3-8B-Instruct-Q4_0.gguf | 8.03 | llama3.java | +| Llama-3-8B-Instruct-Q8_0.gguf | 5.79 | llama.cpp | +| Llama-3-8B-Instruct-Q8_0.gguf | 4.92 | llama3.java | + +## License + +MIT diff --git a/bin/RoPE.class b/bin/RoPE.class new file mode 100644 index 0000000000000000000000000000000000000000..485f5157cfb435aabbfe78e67a27bfa6ec4222bb GIT binary patch literal 4721 zcmeHLZ%@-e7=Mc3XhE4M`0vfhEAYiIkynBwg3OQlNJ>@vE3< zqVN4s#^+WdLsweJ7%{S>UEBNJ^V~iE@A>ib%Qpac4i5`3V!`OH+}S9=s0GCqJ*0~P z6^+I1T8nwwg6k_>aJ_25wfTiAV%Me53Se6>b&TCmN~&>~u!^7F2*n~995SDHGHmmJ zYAyw7D_ILz7(FA7ZRQb=3L!PAG4dO)C80!j+UyFFCYQY?>q>|i8J3KmN{OEO$g@N? zHQ^EA!siNA8FWz8b*7l`P&suaLwtW9STL+fr%L@(=o~@{%CNthvlw&lzCGNpjH}JW%A^$^V9nH4k#Bs30DX8p=Z$Iito7pNRas&m=m zzk=NAAM70)vw&twr20#8c*~AHS(cs989pj|OuCf+>o!K3&KTjKhsd7=xP@ z%*?yTor}c7mrZA5%H@K+j>8&LdnUG6Fzrf@2Gyekb@XvmH+h6@5!Wp~ zV$I5Uo{rYdXmNgX^X0oT{ubOF$`#`53U3IiV}*og{}^7`FYlLEm&f6r1&>bepkM>V z0;eKl<*_mz*DaWE&EfB9$!rRq05)o{wF5AM*BD&K_X0jG;a3a)ov$$dcG~$2li$0T zDZCpD;8n!?WP*ZQFpY0E+=e?yX$GH1V75!?F;cSeJ)v~>Z%T#rE+xa?g8SW>4}Jj) Cwm}d8 literal 0 HcmV?d00001 diff --git a/bin/Sampler.class b/bin/Sampler.class new file mode 100644 index 0000000000000000000000000000000000000000..513ff4ce7603bfbec1cb18ec98017fa84fdf2eb0 GIT binary patch literal 4665 zcmeHLPfrs;6n~3I>4JhNDtei40uSY&CyOS90BN!nLo3nau>0ChnVqS#v(~d5En08>XLwj_C zQ_pSo2XFuMmbF-Lo@yuo4J6Ld`_c?G#SUp zEsmkmXe;@N8WmnPp&b#2mrbLt6%(z?rjj_t#EArGRAp7xrT#H(Az3wUR^pt7^hIZt z1QH`+9V?{TZxe0o1wVI<_D5H&4phv-u2h(~lWWJza2B)9q+x8kO$88U=*CeSU~>C_#1R54pv3}E{z zID^`0>?ByLw`~ecD@IS#yK3IDZ2Wq;^W@mPIUc3l-mQVCiT;U<<+f7wSn{Gp+m}J^k`qk=`r@AM>?P)kl`K* zRMg1&Y$3bg!ooZ(!adXH*c>)Ame;(K7RJEU%eKX_;4y)3;_wJn!v+}#mOSZGemKlj z!;f=O(obo~V-%*LvgRf3-9QmZRbH<;;MQfVeB3pcY6s>#dqsO*vJ@S7dJqfELad4& ziY5ptR j{h45v%yY(I?8^Je7ux}P0L#hy!{qr09-DuQS^@Y2H_ARE literal 0 HcmV?d00001 diff --git a/bin/Timer.class b/bin/Timer.class new file mode 100644 index 0000000000000000000000000000000000000000..9f9acf828c6df51b7d8df3e54d6ca10f5920ab03 GIT binary patch literal 4941 zcmeHLUvC>l5TA9E*uJJD4TOIMx(!8Yd2k=#i4>%^Y9P{upxTYZvUg_!l3))sfZOXZ|O^ua#e-fw1hW_JGU{Q1|fzXQORaJvZ&2J1bUpl!k$ zgY7dh7Wb6UgL}uPXBasKt^1LZTDq?oT)A`igu&V)6JrzF47OgNA6si|3$C*5pPy=r zsZnE$d1R82RKiK4`N*16g-QAa589rNM?!1k_$l(|cxSlaZZg8xkTSdUhB&nl_crW! zPjzxn71*=G4;_~&mpYb~oT(;c>ONZ35jm%CO+xQKWb`fOok)o^<$b9z4cY}#dP8e| z6y(B-7W7zW$wkZPIxF?yqNPlOV&y_&Bv*NtjYRZJ43O_pn01sAiTM0%kH-d6?gJ|k zE*f%2=LLTnk@x2*_Hq}?WMr)4XYsRwUA`iSKi1Mz?&lmZA0)N-tsbarYVv=>WlpME zE_n@{tB;Ej=_BA0&GVgb!vdG_xtd*?RnH9yW$G$~9cqUIv=yilMnU^Xj4DWLX;WHz z=T%;jtRqZ}opf=KpsupcibOt~IDDA(sb{D#)>2^5_Mb~RjD?lHvB+V^HeMoa5xa`5 zb%(wLmNlb`@-BOCRcHLw?k+Tibu~ZvFSoT?G4~*I=8-ZfmUN@@q1Tak3BER0SMbT^cX><*hpVRGsXc&*h`4cV07d=W$8HQqFvhp1JvMN0hIyTAIsL=|t^>QNz z(1L55@CIx#*tkC%XzbnzUyLyFP~Z0>j;&B?{5DHY(e`|jVXzaLNT`!prJ60SM?MQN zxbY;@j%Fx_dMr~(_y>NnF&%rP41(}@jMmB+_i2Qp%zy}ro7!v?)K>Fv|m zYVaGhzTXLcfz3Z?wE^4o?=hb4`gFxlq;{rjZ_d8GMb9?u!rODaJVnmyoqzLcjQ-&@ lrF(CVuCbKPJ*T?@?-Q~CH{b($0(?xrfOPs0ZjvUq{syrrbwvOG literal 0 HcmV?d00001 diff --git a/bin/Tokenizer.class b/bin/Tokenizer.class new file mode 100644 index 0000000000000000000000000000000000000000..7fc9532033d887be06fa13becd1b79f7c40a97ae GIT binary patch literal 7254 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 Ku@0ZY=l=lEX`CVe literal 0 HcmV?d00001 diff --git a/bin/Vocabulary.class b/bin/Vocabulary.class new file mode 100644 index 0000000000000000000000000000000000000000..43c999fd600027c77e2240e45a9c83e843c4e3c4 GIT binary patch literal 5380 zcmeHLTW=dh6h7-XadzW2!6i^Gg^A0>;o<=86DgHwRToR^rmBr4l&A6T*q&r}#>~!! znjgYnK>`Wh`B8{7-jLYJZoH|SRER#z-sYQgKQm{~Uw{Ah2LOBncS=yO!0Ael_Tqr5 zaS4hRY#h)dx)V?_*xBnHFi%^sqU9kIkp(yQ-P75&R$L5raXRv(VmMvcZ&*;CfIG4& zeD>UeWw%8~26T@LuJ2oLtCm7!zcGPrcP%JBls+rLx&`Z}ydEhf)hfJZZT#}RKwdI9 zVm|R?IN|}-TnaK$vKO#0`kFYlSw}o7gw&+R$O&FcLWv%a*eghuT{=THu@EsfteYsP zCsB}M&pK&p!Xv_k&lLtrFh*1NnPS32=k%2f@%_gb=X_H40vbi6&jS`Yb_$oyP|2St zy700YJrZ$v**ucexNI(yq*yo;pP{Ra%SO~Yqyt8(m}d1Lpdr0`P$j-(5iyAsQtb_i z#&}`RN9g_O71hMWJRC`-$$@{EBIQehn6Tz@t~?ijnIy?YZ}C8pQ80aJ5O8H5}gi=H`4b7_-#_D-w3 zAYLsNN;Ph?LCC~B>nw=ngRy20;y%_4bBuK^(6P;QCWRxaxG5|W*q-vw;Wmq1glO%d zIRdka(OG_1E!(^pf4S1RGWA?dBLBri%awEA##%lMWW+M6(dpD{k0Z^}%1Ou0#VZ%6 z5lE_Y#o~Vj*-GE+9UD&p&6LQ@m*nSd{_Zm`vJ*O2kD4!e&aJGA6}MDvEWA0^<5}BF zqGlr&p7}?nfl*lXsh7Q3Ufqh!7`Vte)TKepTsoF<_8$A9Dm|mZm*Hb3n4)Ow^NsAl zb+}Q6HF({E&Dz;6iRo;tyIim*aoA(3WA+vcDlYb3g6{DFb^NiYha8(JW%sl(gZ-0@ z7SluNKc$L>484emo9Uet!^$~2Y3f+8G+@}o*{n6U&&st5?_02SeoqBkDi*9Fk>i%m zR+@h9-smL8P~2j~e?|qDYTHeerY&RTu?GJ9Td?MuU&%Xl(_lcUn!=MJ!g>sgj_){{ zT6sfkMAdLDCQAuE!4*@aOYqrDi|QG}-jiQ~`pnm4TSXhTcobois)IcrG}ualw!m)l zfuK58C{NXNp6;EsjC;I0?B3snF95~Cp4k#qU>R2MsRAWfo!o73@V<;=4a!h}Yxr~* zkwv^azr*z(DjUB-hqG0TiD3vC|IE6wH sKEO2v_z*tAJHQSO2QB_FY{RGUIr Date: Mon, 5 Aug 2024 16:28:37 -0500 Subject: [PATCH 3/5] Added to .project to gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 01cb415..88b8d07 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ /.classpath +/.project From fdd1a5903760bdb71fa39906684055d0dfc9506e Mon Sep 17 00:00:00 2001 From: SkyAphid Date: Mon, 5 Aug 2024 16:30:52 -0500 Subject: [PATCH 4/5] Delete bin directory --- bin/ArrayFloatTensor.class | Bin 5518 -> 0 bytes bin/CategoricalSampler.class | Bin 4981 -> 0 bytes bin/ChatFormat$Message.class | Bin 4954 -> 0 bytes bin/ChatFormat$Role.class | Bin 5066 -> 0 bytes bin/ChatFormat.class | Bin 5576 -> 0 bytes bin/Float16.class | Bin 4596 -> 0 bytes bin/FloatTensor$AggregateFunction.class | Bin 4728 -> 0 bytes bin/FloatTensor$MapFunction.class | Bin 4715 -> 0 bytes bin/FloatTensor$MapWithIndexFunction.class | Bin 4734 -> 0 bytes bin/FloatTensor.class | Bin 7457 -> 0 bytes bin/GGMLTensorEntry.class | Bin 4990 -> 0 bytes bin/GGMLType.class | Bin 5608 -> 0 bytes bin/GGUF$GGUFTensorInfo.class | Bin 4978 -> 0 bytes bin/GGUF$MetadataValueType.class | Bin 5243 -> 0 bytes bin/GGUF.class | Bin 8126 -> 0 bytes bin/LICENSE | 43 ------ bin/Llama$Configuration.class | Bin 4918 -> 0 bytes bin/Llama$State.class | Bin 4926 -> 0 bytes bin/Llama$Weights.class | Bin 5192 -> 0 bytes bin/Llama.class | Bin 5759 -> 0 bytes bin/Llama3$Options.class | Bin 5539 -> 0 bytes bin/Llama3.class | Bin 5033 -> 0 bytes bin/Makefile | 56 -------- bin/ModelLoader.class | Bin 5998 -> 0 bytes bin/Pair.class | Bin 5014 -> 0 bytes bin/Parallel.class | Bin 4721 -> 0 bytes bin/Q4_0FloatTensor.class | Bin 5596 -> 0 bytes bin/Q8_0FloatTensor.class | Bin 5671 -> 0 bytes bin/README.md | 154 --------------------- bin/RoPE.class | Bin 4721 -> 0 bytes bin/Sampler.class | Bin 4665 -> 0 bytes bin/Timer.class | Bin 4941 -> 0 bytes bin/Tokenizer.class | Bin 7254 -> 0 bytes bin/ToppSampler.class | Bin 5152 -> 0 bytes bin/Vocabulary.class | Bin 5380 -> 0 bytes 35 files changed, 253 deletions(-) delete mode 100644 bin/ArrayFloatTensor.class delete mode 100644 bin/CategoricalSampler.class delete mode 100644 bin/ChatFormat$Message.class delete mode 100644 bin/ChatFormat$Role.class delete mode 100644 bin/ChatFormat.class delete mode 100644 bin/Float16.class delete mode 100644 bin/FloatTensor$AggregateFunction.class delete mode 100644 bin/FloatTensor$MapFunction.class delete mode 100644 bin/FloatTensor$MapWithIndexFunction.class delete mode 100644 bin/FloatTensor.class delete mode 100644 bin/GGMLTensorEntry.class delete mode 100644 bin/GGMLType.class delete mode 100644 bin/GGUF$GGUFTensorInfo.class delete mode 100644 bin/GGUF$MetadataValueType.class delete mode 100644 bin/GGUF.class delete mode 100644 bin/LICENSE delete mode 100644 bin/Llama$Configuration.class delete mode 100644 bin/Llama$State.class delete mode 100644 bin/Llama$Weights.class delete mode 100644 bin/Llama.class delete mode 100644 bin/Llama3$Options.class delete mode 100644 bin/Llama3.class delete mode 100644 bin/Makefile delete mode 100644 bin/ModelLoader.class delete mode 100644 bin/Pair.class delete mode 100644 bin/Parallel.class delete mode 100644 bin/Q4_0FloatTensor.class delete mode 100644 bin/Q8_0FloatTensor.class delete mode 100644 bin/README.md delete mode 100644 bin/RoPE.class delete mode 100644 bin/Sampler.class delete mode 100644 bin/Timer.class delete mode 100644 bin/Tokenizer.class delete mode 100644 bin/ToppSampler.class delete mode 100644 bin/Vocabulary.class diff --git a/bin/ArrayFloatTensor.class b/bin/ArrayFloatTensor.class deleted file mode 100644 index f03b214bbc833170d0013ce85fc132c8a9a629f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5518 zcmeHLTW=dh6h32;*xsZ~8Yq_*=rmAR2XG4HsVMP#2IhW+U>6GR8A^HANDf4=X~crm-F{OzyApU-@sQzC=giN(V7i* zL&Z#s%UJ0mED%^8`9NT)&%%Vq1PX_{IJzsOF!u;7x`(@!0|E;VRKSa{Oknkx_1RX) zWM}K4)=HP)5?TB8JE?iB!afhEucDp^nGs6To>oU8kK#MjDO*13Gbxp!N1Q&TH;OW9 z20i|oB+oCcE+2Y`S|3)e@2mSq$J{p={;blvp(3V220|lAI6zmox#rTx;Iy@haQs7p z{{mX|Ll(!hEkYhUeTdMK0Vyk#_v7P52RQieq_cOe1CP}z|6nE!-z zINiW9tA-(q*!J-T4HS>5Ev$$cze^3~3;(Hy(I4g5NJA{5p3;UM2TwAzd_^QSt%aJZ z&l$*Uk<5fQe?mEy zYa*djw!d=``b-PEu}I1GbudBNIPE-CYj*7tn70`nmv_;+P0R6DtDUDZ*VQ!hUrx1| zYHlYn>OrVtp0gVrExqO-Hau%P>6B-ZH51YB^fXg0{#Pg)*^|9f##O*@EpzK7J-khy zeWqo0igWQ)(>0%QDm%a(x6)1AcnjQ*=S?rEnY)Sf?HQSc)?nRce*R>6aU8ihaF%uG zz_t=RHc(0a9Q(2+J!Udc(H@svGxYUjCp+N4>IxKLjlfmcd)B!~E4*eq8>^m>{M#ft z;<{z$76R*@@>zIrvOt}DTrgdM-H~N>IAMoPNWeLugkuO1*)}U`zFJt3Toka`+csp2)LEr;btfhA>4We zyEmoy>6b;fp7w97zX`0k6>o2^;k9sttjl=v$Mky?V)CJFZXJoolqYcc6g|yt0ykW5 zEX`}D_NHGEwcHdP$xNaV(|wNmZVF$!_ad9qREhTaE;b`jGtVAvzpmPl72$JiL=8Z>@~sHlS0n8-{%_ScD~fE8$hdJF1Fr+xWMDPv;MC zzF%MY4KDwMqXJyP`x4Sv&UL)64Bs7i6W+qnFK`v!K0(+-1WT79yz?SL@!Alq5M|NQ^D}`Zl*X zR9Zwl>G5=&p!Q+egSA6G;r9|Qhxc|54l%MmG(7N+As)P;<r} zJZO9^q_E$5aAWgS>)m}1mbX=mKD_C{>N6RSv{rfrR=u@fe~=oDN+uYyNTp+ua4VE# zW33JnOwCs;Xu5tZ;!-Nh4v_taw~BFQr(=8#Dbq`Tgt>;8(_!1$w_VtGjy~J0W0^2a z$XICF0?CwAJwS~zBI69SO6mJ)Mr|=`M+rBE4Mc(_XwH$+A8GXyClg+@phq%GFIq;= zY9WUgEhTq~g$s$1Oyx{A=Ft%!BHJK0YbOa$`TfHU7ArK&IabPTG-8(a3;sMN>(BPs zC`>HUvC@_u#z%8z`H~=RTMJb=pL4*Rlhhh-@jzK~CI2^EW<^rVB(H%p=i^C_bRKYt z>UqNLXpYI)%$Z#pRnH9yg|QXFI+F4p)D@_bfr4h2k1M*?T21NMJGkVtXiO*L~&bdFTN_s z?)+dMH0czusAZ|Y6qmQ^=u@?`i*YU=RXy{Xp=_TrZl!yacniwM%fd^s%$-a|?vBh8 zw_rWsQF*YuydI@{;5_HhK2I_X`BY`)G4@55^c;0@wvq#A!L=4NVcmn9o8dF&qVVu7 z$84;ILgM2rJwV-ev4z-`P!X@Pe|$h4|6H~sVTc|HPg5^MpR9G!j#T`FYn~!mlaNlq}Y)YVFXEj;HZ(DH=*u9xI00uMT}c3aNC1B zXEQ8Buuz|#%5;P~be$*pp}QP@*>;Pj)pum1q@fIp(unT`@jf~lO?}uP1w5xxA3iz3 zB<*3ObnHQ^D~zEFbf2ginqZ^&4_^TBN>r{;SqC3hh^Jbj(u9ECSE+WN+TEYv4`}_k z{?>1>_E(O%PR|DQ0xCD?*~;qy+=RF3>m4drh`h?1--Y*Ri1(@PI^3f7>485uJ+S}F hoPn3&L+ZZ-9|5B`z^7Ci^nC|DhR>+JLK5<2{0l@WhH3x+ diff --git a/bin/ChatFormat$Message.class b/bin/ChatFormat$Message.class deleted file mode 100644 index c3a0df2473d7f2d0119b0695b02029bb7089d932..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4954 zcmeHL+in{-5S>+B$=ax~qbBLSWgRDVUKA9~Q*S_H#Ek(d2`tw@AL(66OJ|oP{ zNPeY23$*Y3s33=4BbE@YR}N$cMFK&~+aYJj8O{vnzh{5_LqtE&?FQ8XYHudoZE2Hn zx84)h@}X$ZQb4N*{E**Cxfzm zsv(B!-%BOkj{)7_}hD+wW(t;@?JnIC+poeMw?|?309x}qKvRQJrpsEbT*PH zcTy`hGI~E1nf;c9O+SxCTq*6?zF;r#PBYHjcqHCJ%Fbms5l1J){26w<5_AeBm~oyR zw(Xd-OsZHK=t(-pQ4fR>DuQqZMrUaMmSZetohaqjvVly64VyEl>?TJ4&LP6{CUjrr z*?H3_)c?Gx99@cq6Nv>xv0yf$ggNMo_+td= zPtI5?L@cwBHjW*{PiAoWnjl`SrLN@X3^0F5=2~y@KsD!1-ZWh9WIC5f-U285nezCBdQq+Q-La3C~WrlsAB3|yD9a(lUrU8t)9rV z8TZ97LpWE#{DMf{8#{3?A0TF^pm!=TZ2IBS6%M(PKCmcYk4$_DwQ1}kSnDU=1(pS) z)ATNyw<;Zfz1(&6Out%a{;RPz*PZ(*cX~6`R+L1elUJ`lwoc3nC&T7kwB`bBrJB3B zbn*X!?9DdzVG~}!38PByOYwNCwmwywU95BQsA|sVG-Z2;xV7mc@Ro?j%gjr$&8=KT z{*BC2zhN`rQMs|axEZB7a27wb$J1PN`B>-WHuhDww8K@bv!8_$hU2VHKje^Fbfra2 zY6o;}V|Hd^r7M+qm}mRK?0VbcQzkm%>E5w}I__L@iL?P-oy?aU=Vy>mS?vjz==d== zJQI*6kYQivCK6kCTL*Nh>tAZ$bo~1rtZXafXDq@U`1A)7J26o*4yd)Qu&qu1CKt9r zpJ9=c)DDt5FY-YQX_%9db)WP>ipCcWx-pe2+7Xd9af5D7^%e#W1bfn2q=a^neF4kM z4~2CPv_;yeUQDE~DWG?do~lus-laNfZEDam$^gG6g&4Vn)?J`HF8rHXzqT*`Nvr>& zRipRutpn-tSMhBf)kC^Q*U|a_|7Hyf6BhNr5Am(hNAxjDqEGN|qaDzv^f`LJK=~!g aTj;N&e~s4ZE7WV~-#~d8wSvhb7M}z7*ML6& diff --git a/bin/ChatFormat$Role.class b/bin/ChatFormat$Role.class deleted file mode 100644 index e06815fec6257a1945a5384644ccde7dec47de7f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5066 zcmeHLTW=dh6h7;^zHCjKhL&4_PD3dPAXkX;LIEj_5^Bj#Dz6)!;M!Km&5qJB zH+Q=#!YY&O`#Gvgt?Cdso)FT{z3n6+Wk zMnN-+f;skVvX)^YVL}E%Q=mj+GIbv{N}rt5*D9v>A5xkNSksSqlCZvrFmda1wDdx) ze&poB^H#Ji)A+n~WZ7}vS|&-cbR_|jtE|h0+<(po$kr&$no-1K{@`$p1qu^p6N`$5 zA2LJnfvNfwf~d_uY4PX2FnsS(ja zE_qEjbw18!q|JZ}G|v-m!Z|KuQ)hN=RXsCNTO_7HSxXumpe~@w5#-i8d|1G`&~9?i z-svqbNmmDBrN zT?-NIM2ee*V)4I1*_mJL-8!8D2DQx1m+bOZTz!fnJCk$qRK+V_u$1jn$E~zSjklnF zJg>ZD+uTW|Z|}%FvK!WY?&lZFi{r?RfwP=L`#egq&BrRuudy$?r7o9&ioZvRnv<KXeJq<$B!stg(1a>@!Zm>`scTUGl2r?la zPo>(&9lD@9aHVapdtWv!2tY_pOZrMC)H6|I@K}&Jv>%QgXtX5RX3JjeF{#2wB;*(Z zA|NM&lT2|-Ymj1j&72QCqWRfbi# z3>A8+LltV1v3@kVld(jUL2u0f*bT-Axfa%P5N(4 zo?UorBI9lPa@iq8cKRK7ml)ooXUlMl#utJudnWk(lY(ns%@JII4~eG)w}H_JaEE>_ gNp)Zi?vkDjdauy@$M6Y!O3x+w{uzxmqL^&^Z@yQKY5)KL diff --git a/bin/ChatFormat.class b/bin/ChatFormat.class deleted file mode 100644 index 9fd030e2df3584b8bc6c18c918f99c7683610da2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5576 zcmeHLZF3tn5Z+5e&b~NtYEmdrs2U1&cyS61Z*|B_8yd)rO**y741AN%vaRG!GCEzT z`62ujW?%-s^P?D6zO&;Dceaypl40lvdr!JY&#rd0l5YR{`?o&;;7cgmFlT|Y)1i7- zDxYc_<}Fw`q{no_qoTdB-#BEhwjitJ5fl7prYu;j)CY|+wi>L>#eS>Ko+HlMLo5@` zZy0U%v4N&a4_f98B10u2)L>Mu-(O`xK-~pEXbeO z_(UnGGO%i`{PLYpERfzYYZ6!bUG7oMr664;8y@q6hs4R6am1xUNKG1y4DnhLN_4Nw zUO>|PQtz<7hlufE$*hl3v_2C2St5Iy@PKg9=1Q6jLuEqNrS1{tDp|uc zD|sIE>E_`YX-XCllUTTuxE-Q#y|Cw9jQ;3|wJ5~g?@Fb~Ve=@#$}57HWzFS8d(Hqe zNir4R?15s+nf%{yq2}IHA$b8DIUi4Fq{)Cwbk9?&I|(5pBWHH%u6kxrg$H_qvOS?$ zo2dz?6e1^ErQHcbrwS6Wgd1po{ANMqS9JcVzFu_@4flk)E zPGvZzikpi?1lw15X`K=~3)5;Ha|EVcMz7YkNo)LSt*gkyb2VD|=QC}poO={%x#P)z zrQAkGQ?J$wG)uZpI@zgoO$FNZB-K-`#s3Pjn!MRNSv&{1Ze<5}`;ca2;OB!7{vR!Hr_&q;e5uc-d4o@)a)Fx1rx)s&4ic z3kntKQtu!>pyJMX-Qj@+xynh&25T_6Hq*nJj0H=@^^v+s25wt$XMAM@3nMrTS!!B# z`%I|BMw%Ma$e*q8wxBvx#;mA!s}d(jdD|F(pY>Ro8Ps`h6-Vs58`pKp>lJe&LiD{c zuTS$XMZCkxP$6o6#i=LTPqB#5#hO#T_(Q}zRB%7;*-A2FJ2vFBCZ{Gt<+5F@L6{1c z`J#PLGLgc`?FkI?j;T?wz=jRp5V(VS)^Ow;ygjsKJkw$#(_MIH$n@@z>10+(HsuqU?wy0_W+GD&)`vE|H?+w_ qF5OSJ6PT{S`+X0603V_(AZH2vejkw^p?rYyA@*l5ikt8$eEtuwJLUoa diff --git a/bin/Float16.class b/bin/Float16.class deleted file mode 100644 index c26a408141aec963b5cfed53242b052be01ab2b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4596 zcmeHLTTc@~6h6bP>{0|#RNf{$;Y-0td=NDe0)}J}V`~#0r@Pa3%I-{^okjac{3|A! z=(|74c&1CFBwcnPrNqd~UcWi#%(>6`_50fo0C)*2C72*k+6xskPo9-viojxrov`(g z$=3Q|qr-heV0!zgwp%4Y_6f}IC>a|jO`U}apF}E1VCIF8!n`6dx%RkDU}{GNyae+E z7S4$6YOVAvERe-7AEf573Qu@IeHC>@$c#{ucC~7RJc^%F*RkuU&!kj_HaPu@H;OW9 zdR=}C$p`V0TuMe7f)SWQhVqOQ`0c7o#}Qr-~6y0uWb@>~LD zgQO6>(F0|{o&0aO#E7tvNp67y_3?Z}+6Wk&P_r|$>ZL)Rh)oW&eQ9`$ z>l{=DA=f!z-JGR`c9U6q2e&*TUI#ox0`h|4_fjELoS&+zS}i9JJ(vMvO=j{TiU z;e=^n8;cZnsDlf*oyU$sv})Uyz^rEUJil?vmgnO)E1jo?*45PWuO?cdn0uWVwG*nC zXLO^3p;zt2h7W5eU8fMQLZJQutB^1LE69W4$=-Fa3K*_sX1t__xBTpr=h-Qp@uTu3 zFPO^e*l{ae#l~A;Kc1Cd(rxY~(zj=17TOK#CiAnC<@i=)`oLxCP=Ai#v7Sn@bL>^O z^q$E;MQ^y|nxU>QR(9%4cEy zv_PGHoHA_@6L7rK!O9i^x2h8D^F2I06PWYtS?p=W@_-G%xe3lu2&}*~%;3Fbrz$Xu yPk`dMc%Q?kO+?u*?sq63E#3JFi$D9gdw8|0EQR}cEvG10h6nv`5AiwykNyByBO}=W diff --git a/bin/FloatTensor$AggregateFunction.class b/bin/FloatTensor$AggregateFunction.class deleted file mode 100644 index 9a87c7c186fca061f73c62226fa56d6ec0d76558..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4728 zcmeHLPfrs;6n}$2+Xdy1q9U41hzIac4tf$a0Ya6efT2j@aoBxr2WDs1*;%w-#IIta ziQfHC#+eqS#4fv#0x@!EcW3rD^XC13^M3sN@(lo9z@q{T5O`D(ikTghvC@y18x4&O zX0Vb--*6=hFi2p0pB=IV!DM4$Yi}QYL!h|i3of~NN#MrZ{4RmPRTW?XN(9D^(Q8^O zU4#)b{^_mM7%Opz0rgcFalzd7G}3BMU>HBAUdgSaK9f=zx`*@+-YCkbX+?MqNt4S? z6WbD^PKITtsd7hCJ>*%Y>xS}}av5-Kl_^?Q)OFM-eXE?hR-qlgPwcmVmVLqEnAW+# z*ems*veVS+1G6f;XhLf;2``#P&1fzg7fq$@6n!TWpjDMqS;YJU)<8OI-K;DG3)!>% zSsEyesdKE58NW%5wHN#tS?zbPnC+;Thmq2T?gs}wPI*NTXVzS0p63iO=OnrI>pxKD zP#q)-lW)GFouAH43RnH8n^4Me$TbBkKs54M08+oM- z7G*5W#Z7AN?Pj@8v^FqQx>dtQh%!q$eImKiGPsh|ZOxD&tW$wr$$d`U;gD(W3X2YG zO9!V=JBjVb(P~YX0@I4olk_h8Y*{vbwWq79o_V!n`R6-YE}vUYj9L{c#*}Kb+x2R# z*kG@6(ktbnl?&9qSLL$Be+9YGJJ@?An*|JNnd&c{%UgEz$+GOuK9`TmK6%biwreYH zrE9kE=C&SB3ojiue_z3wa184@^V5Un<*i7yfwSbHT_zH&vX)BHW9)fZ+Ga9P;VYD= znU(eFLiV5tH%H+Xj1d@KI%;T4%~g+E7#&w%bS;jtDwnvKgnOuWT#z9!Syet0yGNPo zXmW@}k!TSZnyXaiD+IinO0cj0^Ce*gw7^FuIf z#|1ljay09Gh2pzO?=y^kZ)3*ozr(n76YUw-5}JhD_I(iUv}dN^u6;VxJ^Q?Gf1Z6O OFby-qMR?f8O#cFwG)|}h diff --git a/bin/FloatTensor$MapFunction.class b/bin/FloatTensor$MapFunction.class deleted file mode 100644 index 23f95777d86ac903c951122b67473d2f57d0d56b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4715 zcmeHLPfrs;6n~3A+Z6>-R78^r@qix6K~I7vK&X-wH55ra4!f`I;OxvgJB#*<_*G0a z(YqhY_@)IZNtazrffzlsyEFTndGr3ic|U%B`33+_;a&+wJh)Ypn%iwui8l8)d0b0X zV1-sC81-OkkMHwE$yICd)$Se!)`RkLAcYe4nFp5^9_)B9x~4-cLB)f~BlNm4+LYn4 zH}&a_GMH$&k0A?m6bs4S_AEAfS7MYrVSdG}V*yu6TegerH{NQ-neD{*ACe`P?KXBL z#GDMPPE*yMrUuBf$~G($2@@(5hLkBgB>&6_bGh~Sv8P6Nmx@zO#I3K zD%)+NKX6jvSrb}UX>`^!8rBHaI%_Ijrx-es5J^=|Wib!l@fNaqal?hLv zb{sp5qcz$t1!fha$LXE-+45}sVoz7s1M_On^8f5;g?w%$wR%nJ1T(79e%EVs5{rY% zNxxEvRv}RLMpeib{}$xt;9&1pC<|CLD$`$jm$&@rlV{nzea;`1fAWH%Y=2@qg^!HF35N=UDpAZI|rHSU~-Jd zvFuPsWTEz;=7HbPsR^(~S7;9|*WHEeQPu75!Q57=tcY+!?TbXvjw`PB(QS+*9?aAS zSiq786B~+nTXPq4OiFNvcI|84(1@({a3wWrUSeWj=){f#P_KqsJ^&-c^%#uPxJ09e z2ebZHD8HTdKf}cLE@q1U9mcJ@)}3*^plP^H@1t;|J2L|}>FH3n=y{udKD~P|3v=UT JxZB0d{sMq`NrM0Y diff --git a/bin/FloatTensor$MapWithIndexFunction.class b/bin/FloatTensor$MapWithIndexFunction.class deleted file mode 100644 index fdd53bfdd835a3c293a545f81539a2c461552714..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4734 zcmeHLOK%e~5FSI@Buk;CP~J#Z#i8X84shZnK}8@^3W$^NV&OovVyU4bbE^IKwDTvI}KuRYn^!q73O-VT-2(%ofnba`ci!PKgWumUv(b3f4! ztTna@$JqS4=h|Xw)HX&uG;t!8@Z0mmnoWgqdXon=zmA7OYvcGP@*j9-xZtjz;D1P- zT-JLykP!DWtb0w>hngBA&pK~9E>kXbBrPdZ^-0tnw5UT;PRE*<#;-H_7V&zhM4IxB zRG0>}F;v!j*1QpyQD+k~_~x?*XlVi_mKI=&UX8gt4&1o37qP2qX=0rO5$YQM)m8+atXP9HMxh3fCK>GCq>CbEE3MK`oiO0%A?=u#2_;m9tS$ zqY|iKX(?`UbMGk26QZ?-v9bL&c4O2<(wPv+`+bM^vkuh^1;W}B7}Wgd+#R-smA$t=Tl%_F}j=HVV|wY#{cZ;T4ros9a{eH9j%nl-OHR=RVKxpYIM}~ z+WpkwxN_HduWM-`vEWGLI9 zird&W72cBS@x1UdWb^wKTqw`5?T9cxSRUSrTpQR=9@-Ep!~j7_~QQ%PIi^UaSz zXC!5?*cxL3w;0SeH8Hp9Z|0a*-~#PB(#BzMn#}c=Mh>-X9%JernbgeyP}hdKKmbRG z|7n<^afL=#cV>f+P<^=&yocG(1I#@AdyHRqaxmk&LJM$;-lyR7U}h1{(9@&N((@es R0(xg~9xl#Q;nDze{u|ZPQ3n73 diff --git a/bin/FloatTensor.class b/bin/FloatTensor.class deleted file mode 100644 index 89dc88014f58447b132287cfdbab8b8f4a47a835..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7457 zcmeHLOLyBu6uwFvznUg#`U<5FHMGSk#Q|DgOFIV@PP;2-b{SoUy7N^ChE*$yWSaOlQkjlTQc=Uhqm=f~gv007rP zPr#4_2MVS`See?M<0c>`!NfY*AhRa1YqQ1Gb*eE54&KRCaw`S3m@BWSc?piH6=F81 zN}5iC%@(UZ#oRWobi24L#+B9_mmzNKUMas)$gf(0$!BpqnYigkX2EyXk4BKEgBpA-jR3wPaJ339kVPtH3 zm3LjoO~O%W;){E>OFhTjpt`I%R^2cOGaOs4yUwafE$^zFPH{O|Bev}@d6mj7Jac3s zvu2$>g+#@ryhi;9$vlQxUQyYgq6G2G$_kSWPd04ba54906GL64F10mGPStfRy#Azt z_jEa{nZ)zts$o(uof2p%uer{r1XK8=73J-Q^`v!_m}}UzC#}Ul6nm~jrzlUU@+`n0S&)RXzavIx`GWQO%ZH}S}`u*7tbV#BIq^N`o|M*=JVAqX#P z!|7|!E@1qS48*thKzl$>{%^PjGt7Zf@)Q_)K6ai+eggI}JWGVF2~sA9p4pLIb=M%( z@K_&Zip^+^x_wX)MCsHbsrL~b$eYM#Z`kEM(zQq}$8DBq&7yX{=#9m%jkT!X(@1hAs3_t4gf-3!zF_ve49ZT)JzGaCCHIn@z9SA)v`d!`L^ z=5h_@%$tr!Bi=^CN3YcM7!|!vrc(py8VKZnDh*VN{}tq-xY?&u_!MB&wIk0<@bT8a z`}C{qfM@?v{VgA`m34e;_X$^_VQc&wnV8&Rw@S3=W*G!#KO`b+U^ma9&`e{`gRo3& z-LV#^Ojo$oen1th_Fb-2VYRRbW$whF&=lEn}Ts3TZw_&YPx6FHs1e2Z*X>lQzH*ULfl&p4zc7+M-Y_GE8p*7odXYNMEBzOjcPSa-*G=$ zTfy8(gRzR^7jHvDf6iwVr4R<3%hhTwtr14IPsJRM_psNnxNk~eg+(@zM04uRvLiHy z>mY8;$N5s2#k580ioImwft27PQg!IXUeVSVz7ymrgo7X@5Ncqlh|)|A$}CUEBv{=0(G60Yg* zVDiD_k+0#{k3Q}h{Eho}BshWpIRm0l`XpBdr{J`|o&nik&%(67J_qLz8R$BXxC`(+ z%6$$Qn8AIn@nVO@i`^PWzVtN?AvOt@;Kh*K2<`=zisZg($pK_xc1w@Q;QAh}8r~np NF8BZ*!iTT|k{OWKqV@s|ePX1u#Z)3Sipu7H zWdBNm4%puJM-4kl#bUQsq!dnyVSS)PiNE6=k9Wu8{q^_rKLFrs*l9w;f%X0Uo;N_5 zD!nU>9yejZfsG@6%jFxV3j5|P)#Sm|*eM=?tCr2`9+$28FP zPAL0E3pt{(<{S*g zlRoLb1io`XvOQ1%Hla;&pGdc>wbILQ)!F#%N2xJY(J=WkSA|CU5N82n=m@?~FF*kn54A~3*n$Ye~QfwDnEaF6I!;XTd zGo*Y&5Np;#RmyV)n01m`^UWV9Yp&$~hRckIYHi6|;Kcbj?UB|4E>Jy>xCv)$8Jjq> zOQY(UL7qrW1+%U+I6_^4Dw)V_^>|W2T5C0>XYb^a=frC&NvsflPAu<_4c^a&lrvQD zI~C}*>~QG}$6O1WSQM~_Iyi;fGZ(s^p;xmsBM>xov& z=f2B~dJw4;OR~{P*Xxf{gR{~}w^fT*Ezn-1xT$4}{}p6!cCdF_bP5>MveaLS%UgBy zsj}>1o{L9SOI|aS9Z<%tbe|G$LHT%Dcqx{-mr38=k$GentcTn$50)24QECHcIfo8- zl%dDRDl3n%ue+qjTm~xMM~Rw~u1{C83!CuHDqMzl9oX7=wdi3h8|$8s_(K*Sq8`}T zVhb?J=h4B71M0=k1rv(Yfz6^$a#HJ|8q7uyO{juLTvPpqwvu3OUuD|IqSCYC*=yS8 z9ea5vIl9tUGNoLHsy^QfT88#RDj9u3^_wXrH{sK%D$-;0l@6M4bLwvqs~lMEi8Q5J z(SQmmB*0REhR?u(OH`^_gf_J$>b0Q>%lW$nZvI|@)%?Adk2}=A4C~N<4eH$^YD?w* z4x2x69(IG18&n7Bf3J=LeN6YLdaaie*iHohF<^x diff --git a/bin/GGMLType.class b/bin/GGMLType.class deleted file mode 100644 index 7d727fa40fa99fcfc0bbcc76318f4f64a73c9216..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5608 zcmeHLZBrvf5blNWl7+iN^yKh$#Zv(_yaW)BJLN#atrrfsgjA^?sL5uM4D9a2*$HPX ze}bR=D^_Whe)mUN*OMI~c)M)40_=*VVH=PxyWBYp-&4B}m8NU!+z%x2Wr?^=+6#b^ zFjS*bMI@B$ot(nHsdZk#5Pe|4jgt^<2*Jf5d}P3Td%mCncaLbra=6!EE|HA;RzvWz zOT9amX~J!o8ir~380p?+K9gSPBr1qKWw-?bCh`m2I_b_JcAw5K}5F&1IXwx>#iuwab*a<&Hnx{y{}Er<9% zmsXit#~w>=5lhATrAS;{igntKkfmanQ3;j_6D%U08OxRy3oPbWn7|x#TNvsp71Vcd zda2RH_wSqdtzu;ymjr=TWiAcObcB^+UGOJr&Rn*k4ZrDKwv8}FF55~wtuNe2h2l`D zA!`ulkkqI(feS^(b%{q74koM$r-7vs%OldMTN39B{h@)Q-`Qg#9Af4*xRBOC@9lK?f^2P3kBe4;);#JbMdyM{uC*jx zYgX~hkPxgh1EimpddfMJqb4!}zFP2@NNA9cP z%zr*=UFF>UrsV4`4`|G3v@`Vztw7SKcrthd*K5>=9qDq|j#q#QU z#Lj{9>_hExNS?HKGk%SIUY8ydzrwvu>Qg~5)@KJ9t1)HVgj6Xe#|745u%_{~0k2u*z{68E@L8fiXfSGe>Xhdj8 z!z|2c4%3MoWLrZ|o7ptX>wb!R3fn^N*=M<dEbM*Op`q_s jL$@4ESccEFhGg%5KK8yB?zCgD0(TJszQkV&_1t?30Moyl diff --git a/bin/GGUF$GGUFTensorInfo.class b/bin/GGUF$GGUFTensorInfo.class deleted file mode 100644 index 4718ff14ca1d901392018fe80bf8912d611cfc00..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4978 zcmeHLZExE)5I%XH9V=Pmy31a=H_mIjb{|{}>!-Z|YtXnZ?6#=g07E}95^Xb;NROhj z`H$?c4A_9}`+n50hgPxJs}(tglVVsuNF=4_c*o-%?|6Uy_3Q6M^bLJhrIJUN+U>`C zSKMnLRH98s4Rw{u9@P)|5x*I6HM;rW;7|nCqq5?$@Tk!}{?)fes?k>-`Js$4fz> zsPv@c(Z*;LM}z4E6n?ke?sZ)s$ci2g6M^Zxdl-Bzm9*b_)V%)utWP?}boXxTLx5c! ziYi_7X!}@%JH}|UL6^Mx&yST6iH?p$$O0WtWW+55ViTheA`vHFGQZ~NSiqIimK_N8 z58i6VnT3R}AbENjjKxet%;~V@ETffK#u9zDSjRG%FsVXmU_8+jsvZg>RDjJH8XaT& zLyCVPYXuQc5;l~PNc`FoE`zbrKXPp0Su?t$()g@-WFB+YTxL$Ob|#^~R=F*k@Zc#Q z3D$(0wW5f}{MKQUg<2%cIabVVFlH9^B7T}+_va~^*%r%qqK##T;nO8jz9fhW>e8>$7HP}u-{k~33Aog&%_Gq)~u4-Sj z+yx%9bX0(H4e}iX^}7;FF~NB1(N;%cUAyj5E|MyJjJk_s=h20Kmx-<{l!+dRK%1~i z*A~8J#~5bq$s|FoXn-0EScD$(0`SAcZ*cktet^?iDmE@Si_o{MEL zA}}GU;n~Dfq4)7F(FgP)TB48e_#pI%Q4^$}VqC%hPv|OLN56#cH_%>&*qP9o$eF-1 GasLJwhkK_0 diff --git a/bin/GGUF$MetadataValueType.class b/bin/GGUF$MetadataValueType.class deleted file mode 100644 index 057ae130dd8f5831cecbc287b840be6beb67ce72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5243 zcmeHL|4-XS6n~e7KwMTRU0a~rdZpb4-5T10s%hOO0s?BufrWw{nXB!dKy}jxoelRkgt;Q^d#w_M-qS@2D z?*GII5F3#PRcC**PGIi)Y|BdD_`=uU5xBkRym76rl`oE-+xF4{TCyQMbp8&3sW*sC zrKFmGkID4U`$F+Z1}EI3t_(YVz_c#~?I_s{co=<6t+L^xE)zm(+T`>fyq1(vjj??X z$%;#(&HE9eCWaN0c$GNuQsP;mwx)hWec|~Eb2I2+s9Rid;o{`9lninFLl^(^XvGa! z6w#I+@W?8sXlb;S{E^`lUbLc3(G4$JN1V_Xt);&x&RvPeajMLeb(s5#9dWvV%d8Rv zEM%+43)GW5qGn-*OuKEWF<r00|(B>(<{=ffJ+R|OQzc?Q$`2Q?95&D%pk{)bdEAxXnw?1 z4k|;CRj#p44(mwXWS+f)E}xUG8V{xF)%j7#MP78yN##0Lkn7zR)(knp8Va<^=I=}i zCrtUKu!v#1${V8XH1<49tGCS&m{p9P)_2*q<>mOhwa$^L=W3k!Z)e&_Yp&YWawCut z&!|QRmtMUWX`WV2TIG>+jRe{XB-111;(rBMOW*9RGM)mOE0MWg;>%n9?vt0FbiJB#*GR#RmHJ|}Q*cvl3QA_T51E@7L-s>`l&`4(Qp30!r| zwQi+iF8gS=EnF!gtc|b$c;Tbl%5C=uOxgltuwgFnJQ{}z_GnD&iNN)grqvSy*9Q7F zc-ck)H9v~5!_&al3wk!O!z2AdMtbcrpjp@on_8QLF(?5b9Z%>)LdyxY5_&bElL`GG zq1O^RmC)&gUQg(Zp)dnC;6tSIa1(AJy#fWCv{|%c4o9mvE+VylgZaamkA8tq{=iWI z?%}h97{K2GJ}3L{7ToX4EW-o%G?DNSB^X>R;j@2BAp3m@g}$sCu$b@}&BOT)Q#6mk k63QvSL-+zIz?b;5P!54du)H=4PjOtt(PLP_w*ox+8yYF0cmMzZ diff --git a/bin/GGUF.class b/bin/GGUF.class deleted file mode 100644 index acd7ab4c99c18f596da6e827bc798088124ff367..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8126 zcmeHLYgZFT7=AaPA@K%SQEM+Nr3zlKDs5Fz3n9elhENi)+FCj!ld!Pajk}v@diw$W z(r^6{{od1a+H=}-`q3ZLpU~51c2|;+35hvgPEY*+!_K_(y!V;mdGgP1e-P1i`aVn{ zh58eTm4z_%D>S&ts_cTn%;JUg`X^JOvh!WyUL6T?^{?& zBorE&k1x!wXxX({EtyzM#TT=EP@pPwG_$g_lwQup=hr--)%bEInO@8&v{%z~$DLLv zlF^GMb1OCnjyE}@B~6zXxjlUY>w8M9sOJ<4SGn!zmZ{J_mz$1d$E=D83nR<`K#7aL zhf3UKdFHaUt?F9NUmtin2PiGY%78p8#u=^dZN{~AvpC%_;XEX4F0rY+T5{>D$lDqt5ntv<{~9(*|ydVUUIIf(TLcm=9p<(uDZ_E zZF$#Hnd;Wc{Iy8CxMVlD7a>)|a8mT)q+f@UcuuNGSJfR=H}krURyAq}H4@Fu9FkM8 ztrET;R=CvygK9JQbu+=)gcTCy9q^@t&bFIrLDtdw4~4!@aSv=*-^p1YDfN2)~1 z$}G3Vid-ESTB_=+f_I7TM{c@ zk%%a3-Rfx1Gl+>M=?d@p3z}Ve@_&=7xVq6*N?r>#+>gy2DLUXKhG&Vn8ASKkTCs+yXAQ&9?pGw_NAb zr&DG7I4@tSv*leLWvh5`TXqHyZ~SlGAzTX;GbjE>W`=OsF0fqt!_p7T%h=Jj2A<^} z@)#hE)vQYUGqzWkmYJEiN(pXqn<3V_2RTZo>D+!Aqw@+K8E;^5{0^TM%*G*2H~C_v zw9f6UI9n7N)~p;eR)Y&FnCy2qbkHq(HNoV7G}%|=ZYm&^z(I{q1QgPF|F14dqyhR! zp_99lC*V%Nz(HM|&GDF@bL}-H60O`%1m{&g1s2Cp=-{{}UUt(HPrZr8ALn>kl%o@- z>+mj_-kt&Hw7oT1Dr5WLxV8YwAhrQAhZ|lLPb`CT(@Q*QR&_^57-t2~p!+OU?X zl*?dzoV(06!KgWi;GU`=3c*I%oaH@>!2v0Bd#3?n@;^OeGMsbaD?ewgnMV-z`2y}IB0JXM29{gK!NTbqBm&|?ZsCZ zUm+U6cckGvitl~2AL|Fa^@ET(gmoc17>q-~I2??JgYgYIvb}Ev@<$uKkKy|`um#Qu zddnN%ZdiYZhUr~WF+WTvgK;z%-}A;1tc}t8&~OTWO~D%lWAt}AeQ$W;S33JAzCtvK z-@-e>&jtJzoazD-GxK5Ru&j!Tg~Za})yCDNz_DMDB28f=<|ef_X@ z#=|<(Z3SW+SXa< ztQ2dRGE%HvV;{OI#mdr34_G&)SgUlm2dtPB>odC716ERsb)P=(0V^%V`hp(xfVCpU z`jXaqz`7^J`ifW&SPvvv3awKPr)le5Avp;{>k@=M%A=}7#HoOB7=IOkr{fme#AtkS ajK0JC2=0~=Sva*Hl0y}GL^Yf&-~0;?6~cG` diff --git a/bin/LICENSE b/bin/LICENSE deleted file mode 100644 index 482296e..0000000 --- a/bin/LICENSE +++ /dev/null @@ -1,43 +0,0 @@ -MIT License - -Copyright (c) 2024 Alfonso² Peterssen - -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. - -MIT License - -Copyright (c) 2024 Andrej Karpathy - -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. diff --git a/bin/Llama$Configuration.class b/bin/Llama$Configuration.class deleted file mode 100644 index e7e45a5cb008262dade7186fd97e8b05434c19f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4918 zcmeGgU2oh(aGa*OoRj9Ov{1gfgaF~?s;Yfz0f~kjJ>evX3qka4&z?JPYVW%1b?EU! z_$x>t!8<<+F>AZ@BAsiex}-w%r1N-pXLn}j+w<4ozx@FKpTl+w<{Y@{MLgzPJ4z14 zDAU{sC0j7>z}hiC;kP0#N4E|J$LJdeE(IcX!09>A4n+{4{K}43WEKxl9}GP{Mx8ov z<=MnTNwq3I^Ip}M3-36D#61L4R>HMB#OmZ3!e!o%olXXcCYw7>UKXpa$tT(1=xZ& z9aw#S!(FYFUW6OY+ArTrjj4)GFkrrl6A|SiVTo3Q2;=k~bK7b9p)ISjS>iIWP?o6s&<`+3vo8!hDMys6|)F>@jTlB%rA67E0dBV?Q8 zW}V1Jp}WVMEKry->sT>2e#i{j3qDOq`;$913l)nvQQENM;PDhLUlEEmYoTiSIRlz? zl1Asv9#J;D$^Q*6Ga_oFlGlh6`SG+zS`WBD@qEioI7MY_B4<}d)iWb`A~iL{dQ|C* zP}g8p9OSn5cv7>q(QPVo@8p$dL~9RYMU@_oVw82#nGwkcV}lQ}A=L~u!g?X1+qTP< zC!BCCY++HL9q8Z%)K25hg0+5VQ(#pwdYaxv^Hyi$ua-McP0g!?<-Z(jjePFQ%&476 zrC3poPP$%yoEn@~PP*+zv>G9GBgIW4Tl}wJ?oAK&Zkw`zK`kr&rTBQOk3MylU7U0A zSoNGY3}r`DaVy=Y!dp;1UKL)7Yj!i~+qMCZ?1lA^`_;kn;&xQpz*+K8-maj&hRUjA z?8{#1J1zqie~l8U>!NBhlndA4on^QR?@~Wy+k4)*C_MbW?QE=iLgIejj5)Ni#eofv zIxNvqnV`zac@qlTmGP!@e(qC)rLQvWW0$_99aze7?sP0Y2bO!1nBB2o+L*TBBL^<$ z>(pd9)jy&}%s!^(p-K(h2I?D8ziA29;W8}H+d8yLxLCq=3EdJdm2kO)S70UIw+d@H zTrc59zD{i*lFJ+Pyhf{ciP{oD_jkDd3|6HSPKsjvARQ$>ygQQjLf)T${rWoqd;?$9p+;cY4Ozsl zb__GT4hsa<57?O94w)R>e$qSOo*_UE39Pz1p<<@XWvujl0=2^)fis7_FR>ZeW?-A- zIX**t#`uRB9J?5*fiN+Fr6HfRnHO*Z=YIMRGiS`ggy+4>A*vFat{QTQoOY4N*Fp;O zErG43o2lDYvM&aSW=1G^|K>h{g|_l>0+$J_y_~>9t(9Ja56Jq9AEf573dh{1o{B~S zh2T&+(yABoDE^8%4Lgo{OiE>FkJEqgMo~u1WW?V=iq@qY@N|W!UBi|&o>pc&GuE?3 zcMTOW719?P?JJz%Qun#$(!^xNK1U3a0 z9Y&AJJ8j*{Z2Zk?=c<``HM9KJQ>~KEeU}*34pqzxPNUPV*O|nI&pJ*zjY_gAfztb0 zC0l%3kbAR(z0<%fV7Qir{*qnZ%A-%2WoLX&A62e-#Zb17CvK%Xc<>f@9xnDfCn3+;q;pLxZ>^7KX&+Q4!0(7r7`GL!ZEx5-uEPxi7iLsf>Tr|5*|Y<>A1S=x|5OYXcOGNK z=8=jG+ySioV0~#7&cj()#MXJJ=X5Ejjhs3;UC!xBPFHh!E~jfbT}NJ)-$qJNUATzf z1fNZK59uXr-9za$q|R@!_2b6-zrcro;8zW<;CnH}5}?>#N!t#50^9g?20q1i4X(m9 Xq#M|}4o$cPml4&3&yaqe_Ba0qn`~uc diff --git a/bin/Llama$Weights.class b/bin/Llama$Weights.class deleted file mode 100644 index 8fb4bc8ea60c0527746047b5bc9b783a61e8af0e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5192 zcmeHLUvC>l5T7$?9AA?-36w(lw}b*Ie;k$ei2@Rh8XC!I5jH`H2WxXTwl}%kb@ujR z{6+XGNFag4BOeMedv|hd$(OrSPAWtnyyLz7&Ccx1&g|~|{m*ZI0Kk{9U4@DRE6sq1 z{PqthdVLdBVZnj5BYw)a11@{pPY;jKGY;G^>KJ7Q!$b6aA$uLe4+FH^yMf}SjWSaD zfdi{Lj5^$y&M=veKKzs-9>(1+T0~`da`tu1R~a7Lp;OzaY?^LYj;E;%@7kfyY;%t^ zv|_qK@?ea}G#SfT>1sUbcp~a(>imO)X_w?W~un zd*NQDRC&HBn-z63t?nGqqIQ&zRd~aJ`k4$q*r42jsk7sE4oFH~v3stDk1ztYNcZC>)5EBKt-5y8=VZj)+jPK>pJPyO35k(N}i{s_Tqm9xj#GE zyEQrm3~HGhFX`j0IQtas>~x;1M-^*cGL;?Bja%s!UAzU|$Me!ly3E~JdiIUX1G`|| zg z%0(LC4{T+l-V_p_#8iLM?X>i?(NrD}4zdF(`?z5Gf~q?8=2TUS%1&-e#oEJNdP6&K zJsG{%u#y~D-jk%}j(uYz6~OK|a4i{kpgOLKeL_qV34)mRMHJCHwM`Wf61emPBlB2A z2JV6bFHwDM71rSzEYiPqsKQc0Yv3mIdPbKsx{}e=3|G(kYZ+b7=mxx;@V}DL8yS5y zk>il$oA4U7uM_G%X;CNY{tmZ(+<5a>c>7Q4Rp4D}7YPIO+oX0m`R~GeaGQDy@IJK_ b_y9g6>e844TksLh_-Qigz{k)?5L^EO=HJJ% diff --git a/bin/Llama.class b/bin/Llama.class deleted file mode 100644 index aaeef7052c54c9f6cb134366521d463c73c68553..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5759 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 diff --git a/bin/Llama3.class b/bin/Llama3.class deleted file mode 100644 index 2c47d0df3e46d5c00fa5406f1c695e6ca6f9dd2f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5033 zcmeHL-EZ4A5I?4AY^!OLr5{_{bz{?Rb^G8xEKf^UU=8BIgE9|uW?iE;JwZ2`ulZkk_C=VC|T8S8Ju~aEYw-A1}aWO#H>(~CR!atJT_lbui^M;z@$``9&kFNw~8`q#|i&HQiRL?h))or4#Sr7 zQ)^eIaSoa-+Obp^Dr6`$Ix-p~&;zcy4A3{!E-j`bQ5<#D{{MQ>u{5XiW}-;K4vx;QH!qR zFA{XkJjZ5+zlam1Ej=F zofA*$J8#>{V*LGD=d0YhnnnKGnO14feVbaf6Dh+Bj*9bJuQxW9=N(+VMkQU9h}w~2 zwo)wqS19-LlfBo#Dqy*mh5IGDSCwaAoKeq@qcBj;QmpzcO1aO*DlJaLZ@Z+Qm<(0?9hY1)#QJoQ zJ*dOwRk#RO2wZRa$DM~Pc(z?}wFXqEk7E0fqr_ga+JeW?Hsq zvZh+^cM}&fCNq4(W~@#F+r{fSHd$gOB!L^vU-Osh?Y;TngV z;U6dA5lXm--%P^w90^+!2}={ckKvO!K4(!eUw4l0<{9|@nDI5>7Tm_we2RLOQSY6Z m#m8&Tv-tH)!Ugyod6$49f@mws*u>{PTJr$MD>!opzW5h@$!@*? diff --git a/bin/Makefile b/bin/Makefile deleted file mode 100644 index 7e3c025..0000000 --- a/bin/Makefile +++ /dev/null @@ -1,56 +0,0 @@ -ifdef JAVA_HOME - JAVAC ?= ${JAVA_HOME}/bin/javac - JAVA ?= ${JAVA_HOME}/bin/java - JAR ?= ${JAVA_HOME}/bin/jar -endif - -JAVAC ?= javac -JAVA ?= java -JAR ?= jar - -JAVA_COMPILE_OPTIONS = --enable-preview -source 21 -g --add-modules jdk.incubator.vector -JAVA_RUNTIME_OPTIONS = --enable-preview --add-modules jdk.incubator.vector - -JAVA_MAIN_CLASS = com.llama4j.Llama3 -JAR_FILE = llama3.jar - -JAVA_SOURCES = $(wildcard *.java) -JAVA_CLASSES = $(patsubst %.java, target/classes/com/llama4j/%.class, $(JAVA_SOURCES)) - -# Bundle all classes in a jar -$(JAR_FILE): $(JAVA_CLASSES) LICENSE - $(JAR) -cvfe $(JAR_FILE) $(JAVA_MAIN_CLASS) LICENSE -C target/classes . - -jar: $(JAR_FILE) - -# Compile the Java source files -compile: $(JAVA_CLASSES) - -# Prints the command to run the Java main class -run-command: - @echo $(JAVA) $(JAVA_RUNTIME_OPTIONS) -cp target/classes $(JAVA_MAIN_CLASS) - -# Prints the command to run the $(JAR_FILE) -run-jar-command: - @echo $(JAVA) $(JAVA_RUNTIME_OPTIONS) -jar $(JAR_FILE) - -# Clean the target directory -clean: - rm -rf ./target - rm $(JAR_FILE) - -# Compile the Java source files -target/classes/com/llama4j/%.class: %.java - $(JAVAC) $(JAVA_COMPILE_OPTIONS) -d target/classes $< - -# Create the target directory -target/classes: - mkdir -p target/classes - -# Make the target directory a dependency of the Java class files -$(JAVA_CLASSES): target/classes -compile: target/classes -default: jar - -.PHONY: compile clean jar run-command run-jar-command -.SUFFIXES: .java .class .jar diff --git a/bin/ModelLoader.class b/bin/ModelLoader.class deleted file mode 100644 index 005f26169c2f1b413f73e9ee6c8a86de0d10034f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5998 zcmeHLTT|Oc6h3lDdz$-U47pvNooteEhp^^&ZDpOBQiJo2+Gmydxvwhsmknd4I-% z7#f^1w$ODcY}PDmFf_}VD+!Ye#PMhbvKkCD+wzJAC!f;q%`_U7`|}wX)W9uF+t>4M zH!r(+LA&`){I$Ay$LZ#+Vt4WDC9%Yo+K-IK_?UnEVA^kwb^YF>iA$4@yZSVu+z4iD zQIQ^uc9-1Ipow^QtT26Xsa{kq4USFO%$7GbI8rDspnB`Vtc7m&O|P zJ)|oimQ?PQg52xj&yqeTb=%c#X4wMM)9IkASE-=P#Nez7-opMj9=@~mlIalF)mLqY zy18r*EsZt7za<#L7p5iGzLt;Jsy`>w>I7%COAHZeCyljS|%Nh&0!9iTOewwlVrq#z+uiyVd4G>g(1<4=WD|qSD&teeKx;Of8Z`^7bFd z63*oRhV!KDBnrt(VB~zV=qW&OOfPbzP9B)#RW;+>(7vvvjMvg&oLgiRuB zb+HIwHG$XbgxLKst-hv?z_`ok;o8e>pnJ5?kE68f^%|4gKQ$SL|V%JOX@z#I$>6h7ooP$U8w>;ri zwtzQoF6wykw(&k5x4i_@yyG!beIpY`O<1fFGk&u?I7Vy^?ByKt>ly~>a4&w3ecmbE zC(PolyOdEu(AT>=IS0dVb`XZ(oCaqLJ8LnjvT@R|8J+i9D^xVp-lB>&+$7GzlLP9> z;DB7SU98<0k$Mo;a!%kbU@ahi#l!Ejjs~X-2BuTFXlxB4EL*pmj7U$Q_-j65YNs`k zk>G|=zPVja26PQB?p|uaN(-t}R{4fvy{cfSTU>drXc+2q5v|Ep9-6eRlFv=UdsyR| ztA!)z5K~YhX@hT2W`9S81{Z=kMW<9W!uKff_FkqGFJ?%Y{keygG1O~mpcjn0cdJH& zGM9@AlcIzE@ORT-2sNKklo=sNr?whlUMS2NxU8P8v2t=K{mjQWLFHOPga1@SVFYWg- z*w01!$038`LvR8SC$V)ESsMQ5eu3dHPo4S+&iv-{&f`-_0sOs+&%po%uc16Z8E?Rw zsOv3kr{IDwX>^;Uw|7cPeeX+3AtwtLVFa1)V0!>1zZ*(WZv$I;N%$d@kb(ChA6igI z$p0hcXQ2qAs9E`-zvX{Mcw=xW)cZlm-`(!NBK#7Jhy2S4`F}_F6L2M|-A9gwycA60 YOj8)|Y5X6??D!D9{xMvGGRE!3zbIsOz5oCK diff --git a/bin/Pair.class b/bin/Pair.class deleted file mode 100644 index af9b0f3a08d5a7917a933c94caab88de08c4cd46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5014 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 RA?6fj02JXPsAC>}`VZu%(enTR diff --git a/bin/Q8_0FloatTensor.class b/bin/Q8_0FloatTensor.class deleted file mode 100644 index 05e29da8d94204d02eb2e4c8b2d48566f3a9a6c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5671 zcmeHL-E!MR6h2Cm*jCacO({?cbQ}Kc0#2a?3ND>VOB~E71Y(mJt}+{GZEq^=n$^l+ z9)vexm?<;#h8uVQE_oD&vrs#$P8V1ZP=Fpyu^y*f#-j+%uZuSlrT;H|eVzG9Fq_l%F?@N#6U=c;^(=J{0 zsc5aPDP@u?uD#aj6helRZZM!fQz= z(Y+3P0?G1Aqs?Lu5#z(M@qKw~Z=bn3#h+zT(}ahF3y&*=_&s!WlPM-#3{F$Y0H42# z@S8`T?2^DUz}HCJz*2TJnFxMVk9#h2#maZ+#rBNK*l4=$_B0Zl{Ed^sU*Mv+9XK4iD27 zw0@qN(5%JO2$eF3?7}APj2JqWHJNK~zp4|GHL#x>q5OnI-s@?0FKXhRVT8P)K)YZ* zXEJoD;$~x!z_ye(MA{&B5~{_!-hZiXqjG%E8)xk~N2ac;N#_4O)yAs1wMfhRz6@E$ zZnVGj>b+32wC$u_7)#bzp!i5ORxbWmkelg~ym@n7jh=l*Wp=`I_NdXC zk2#g?;Er3WI&QoCa&6;>4@7PIL>yqx=bnVu}U6Zu;AM8 zh6(mdEXapU$8(1TGsRlfD7(-)c$H+D1y_sCK+;ueB_|$}yhZH_b>0$GM+z+~9zowp zu$8;VhfSNDvtYhhayB+Lod!N3S^iKyc7%$xQWcH&B=((5(%;H|@!SYl-kZepWrAVYKT4r-A$H(;y`;Rc{t*pfR3OE3eo_-_evkjMLFD1eRkJR;^`9nvgbe^2Ap;1LDSz_WM<b?mjWmmYNo6ZSDT8fhDBEu-Y&Kkn*D;u O9> diff --git a/bin/README.md b/bin/README.md deleted file mode 100644 index 38bbc79..0000000 --- a/bin/README.md +++ /dev/null @@ -1,154 +0,0 @@ -# Llama3.java - -Practical [Llama 3](https://github.com/meta-llama/llama3) and [3.1](https://llama.meta.com/docs/model-cards-and-prompt-formats/llama3_1) inference implemented in a single Java file. - -

- -

- -This project is the successor of [llama2.java](https://github.com/mukel/llama2.java) -based on [llama2.c](https://github.com/karpathy/llama2.c) by [Andrej Karpathy](https://twitter.com/karpathy) and his [excellent educational videos](https://www.youtube.com/c/AndrejKarpathy). - -Besides the educational value, this project will be used to test and tune compiler optimizations and features on the JVM, particularly for the [Graal compiler](https://www.graalvm.org/latest/reference-manual/java/compiler). - -## Features - - - Single file, no dependencies - - [GGUF format](https://github.com/ggerganov/ggml/blob/master/docs/gguf.md) parser - - Llama 3 tokenizer based on [minbpe](https://github.com/karpathy/minbpe) - - Llama 3 inference with Grouped-Query Attention - - Support Llama 3.1 (ad-hoc RoPE scaling) - - Support for Q8_0 and Q4_0 quantizations - - Fast matrix-vector multiplication routines for quantized tensors using Java's [Vector API](https://openjdk.org/jeps/469) - - Simple CLI with `--chat` and `--instruct` modes. - -Here's the interactive `--chat` mode in action: - -

- -

- -## Setup - -Download pure `Q4_0` and (optionally) `Q8_0` quantized .gguf files from: - - https://huggingface.co/mukel/Meta-Llama-3.1-8B-Instruct-GGUF - - https://huggingface.co/mukel/Meta-Llama-3-8B-Instruct-GGUF - -The `~4.3GB` pure `Q4_0` quantized model is recommended, please be gentle with [huggingface.co](https://huggingface.co) servers: -``` -# Llama 3.1 -curl -L -O https://huggingface.co/mukel/Meta-Llama-3.1-8B-Instruct-GGUF/resolve/main/Meta-Llama-3.1-8B-Instruct-Q4_0.gguf - -# Llama 3 -curl -L -O https://huggingface.co/mukel/Meta-Llama-3-8B-Instruct-GGUF/resolve/main/Meta-Llama-3-8B-Instruct-Q4_0.gguf - -# Optionally download the Q8_0 quantized model ~8GB -# curl -L -O https://huggingface.co/mukel/Meta-Llama-3-8B-Instruct-GGUF/resolve/main/Meta-Llama-3-8B-Instruct-Q8_0.gg -# curl -L -O https://huggingface.co/mukel/Meta-Llama-3.1-8B-Instruct-GGUF/resolve/main/Meta-Llama-3.1-8B-Instruct-Q8_0.gguf -``` - -#### Optional: quantize to pure `Q4_0` manually - -In the wild, `Q8_0` quantizations are fine, but `Q4_0` quantizations are rarely pure e.g. the `output.weights` tensor is quantized with `Q6_K`, instead of `Q4_0`. -A **pure** `Q4_0` quantization can be generated from a high precision (F32, F16, BFLOAT16) .gguf source -with the `quantize` utility from [llama.cpp](https://github.com/ggerganov/llama.cpp) as follows: - -```bash -./llama-quantize --pure ./Meta-Llama-3-8B-Instruct-F32.gguf ./Meta-Llama-3-8B-Instruct-Q4_0.gguf Q4_0 -``` - -## Build and run - -Java 21+ is required, in particular the [`MemorySegment` mmap-ing feature](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/nio/channels/FileChannel.html#map(java.nio.channels.FileChannel.MapMode,long,long,java.lang.foreign.Arena)). - -[`jbang`](https://www.jbang.dev/) is a perfect fit for this use case, just: -``` -jbang Llama3.java --help -``` -Or execute directly, also via [`jbang`](https://www.jbang.dev/): -```bash -chmod +x Llama3.java -./Llama3.java --help -``` - -## Run from source - -```bash -java --enable-preview --source 21 --add-modules jdk.incubator.vector LLama3.java -i --model Meta-Llama-3-8B-Instruct-Q4_0.gguf -``` - -#### Optional: Makefile + manually build and run - -A simple [Makefile](./Makefile) is provided, run `make` to produce `llama3.jar` or manually: -```bash -javac -g --enable-preview -source 21 --add-modules jdk.incubator.vector -d target/classes Llama3.java -jar -cvfe llama3.jar com.llama4j.Llama3 LICENSE -C target/classes . -``` - -Run the resulting `llama3.jar` as follows: -```bash -java --enable-preview --add-modules jdk.incubator.vector -jar llama3.jar --help -``` - -## Performance - -**Important Note** -On GraalVM, please note that the Graal compiler doesn't support the Vector API yet, run with `-Dllama.VectorAPI=false`, but expect sub-optimal performance. -Vanilla OpenJDK 21+ is recommended for now, which supports the Vector API. - -### llama.cpp - -Vanilla `llama.cpp` built with `make -j 20`. -```bash -./main --version -version: 2879 (4f026363) -built with cc (GCC) 13.2.1 20230801 for x86_64-pc-linux-gnu -``` - -Executed as follows: -```bash -./main -m ../Meta-Llama-3-8B-Instruct-Q4_0.gguf \ - -n 512 \ - -s 42 \ - -p "<|start_of_header_id|>user<|end_of_header_id|>Why is the sky blue?<|eot_id|><|start_of_header_id|>assistant<|end_of_header_id|>\n\n" \ - --interactive-specials -``` -Collected the **"eval time"** metric in tokens\s. - -### Llama3.java -Running on OpenJDK 21.0.2. - -```bash -jbang Llama3.java \ - --model ./Meta-Llama-3-8B-Instruct-Q4_0.gguf \ - --max-tokens 512 \ - --seed 42 \ - --stream false \ - --prompt "Why is the sky blue?" -``` - -### Results - -#### Notebook Intel 13900H 6pC+8eC/20T 64GB (5200) Linux 6.6.26 -| Model | tokens/s | Implementation | -|----------------------------------|----------|------------------| -| Llama-3-8B-Instruct-Q4_0.gguf | 7.53 | llama.cpp | -| Llama-3-8B-Instruct-Q4_0.gguf | 6.95 | llama3.java | -| Llama-3-8B-Instruct-Q8_0.gguf | 5.16 | llama.cpp | -| Llama-3-8B-Instruct-Q8_0.gguf | 4.02 | llama3.java | - -#### Workstation AMD 3950X 16C/32T 64GB (3200) Linux 6.6.25 - -****Notes** -*Running on a single CCD e.g. `taskset -c 0-15 jbang Llama3.java ...` since inference is constrained by memory bandwidth.* - -| Model | tokens/s | Implementation | -|----------------------------------|----------|------------------| -| Llama-3-8B-Instruct-Q4_0.gguf | 9.26 | llama.cpp | -| Llama-3-8B-Instruct-Q4_0.gguf | 8.03 | llama3.java | -| Llama-3-8B-Instruct-Q8_0.gguf | 5.79 | llama.cpp | -| Llama-3-8B-Instruct-Q8_0.gguf | 4.92 | llama3.java | - -## License - -MIT diff --git a/bin/RoPE.class b/bin/RoPE.class deleted file mode 100644 index 485f5157cfb435aabbfe78e67a27bfa6ec4222bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4721 zcmeHLZ%@-e7=Mc3XhE4M`0vfhEAYiIkynBwg3OQlNJ>@vE3< zqVN4s#^+WdLsweJ7%{S>UEBNJ^V~iE@A>ib%Qpac4i5`3V!`OH+}S9=s0GCqJ*0~P z6^+I1T8nwwg6k_>aJ_25wfTiAV%Me53Se6>b&TCmN~&>~u!^7F2*n~995SDHGHmmJ zYAyw7D_ILz7(FA7ZRQb=3L!PAG4dO)C80!j+UyFFCYQY?>q>|i8J3KmN{OEO$g@N? zHQ^EA!siNA8FWz8b*7l`P&suaLwtW9STL+fr%L@(=o~@{%CNthvlw&lzCGNpjH}JW%A^$^V9nH4k#Bs30DX8p=Z$Iito7pNRas&m=m zzk=NAAM70)vw&twr20#8c*~AHS(cs989pj|OuCf+>o!K3&KTjKhsd7=xP@ z%*?yTor}c7mrZA5%H@K+j>8&LdnUG6Fzrf@2Gyekb@XvmH+h6@5!Wp~ zV$I5Uo{rYdXmNgX^X0oT{ubOF$`#`53U3IiV}*og{}^7`FYlLEm&f6r1&>bepkM>V z0;eKl<*_mz*DaWE&EfB9$!rRq05)o{wF5AM*BD&K_X0jG;a3a)ov$$dcG~$2li$0T zDZCpD;8n!?WP*ZQFpY0E+=e?yX$GH1V75!?F;cSeJ)v~>Z%T#rE+xa?g8SW>4}Jj) Cwm}d8 diff --git a/bin/Sampler.class b/bin/Sampler.class deleted file mode 100644 index 513ff4ce7603bfbec1cb18ec98017fa84fdf2eb0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4665 zcmeHLPfrs;6n~3I>4JhNDtei40uSY&CyOS90BN!nLo3nau>0ChnVqS#v(~d5En08>XLwj_C zQ_pSo2XFuMmbF-Lo@yuo4J6Ld`_c?G#SUp zEsmkmXe;@N8WmnPp&b#2mrbLt6%(z?rjj_t#EArGRAp7xrT#H(Az3wUR^pt7^hIZt z1QH`+9V?{TZxe0o1wVI<_D5H&4phv-u2h(~lWWJza2B)9q+x8kO$88U=*CeSU~>C_#1R54pv3}E{z zID^`0>?ByLw`~ecD@IS#yK3IDZ2Wq;^W@mPIUc3l-mQVCiT;U<<+f7wSn{Gp+m}J^k`qk=`r@AM>?P)kl`K* zRMg1&Y$3bg!ooZ(!adXH*c>)Ame;(K7RJEU%eKX_;4y)3;_wJn!v+}#mOSZGemKlj z!;f=O(obo~V-%*LvgRf3-9QmZRbH<;;MQfVeB3pcY6s>#dqsO*vJ@S7dJqfELad4& ziY5ptR j{h45v%yY(I?8^Je7ux}P0L#hy!{qr09-DuQS^@Y2H_ARE diff --git a/bin/Timer.class b/bin/Timer.class deleted file mode 100644 index 9f9acf828c6df51b7d8df3e54d6ca10f5920ab03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4941 zcmeHLUvC>l5TA9E*uJJD4TOIMx(!8Yd2k=#i4>%^Y9P{upxTYZvUg_!l3))sfZOXZ|O^ua#e-fw1hW_JGU{Q1|fzXQORaJvZ&2J1bUpl!k$ zgY7dh7Wb6UgL}uPXBasKt^1LZTDq?oT)A`igu&V)6JrzF47OgNA6si|3$C*5pPy=r zsZnE$d1R82RKiK4`N*16g-QAa589rNM?!1k_$l(|cxSlaZZg8xkTSdUhB&nl_crW! zPjzxn71*=G4;_~&mpYb~oT(;c>ONZ35jm%CO+xQKWb`fOok)o^<$b9z4cY}#dP8e| z6y(B-7W7zW$wkZPIxF?yqNPlOV&y_&Bv*NtjYRZJ43O_pn01sAiTM0%kH-d6?gJ|k zE*f%2=LLTnk@x2*_Hq}?WMr)4XYsRwUA`iSKi1Mz?&lmZA0)N-tsbarYVv=>WlpME zE_n@{tB;Ej=_BA0&GVgb!vdG_xtd*?RnH9yW$G$~9cqUIv=yilMnU^Xj4DWLX;WHz z=T%;jtRqZ}opf=KpsupcibOt~IDDA(sb{D#)>2^5_Mb~RjD?lHvB+V^HeMoa5xa`5 zb%(wLmNlb`@-BOCRcHLw?k+Tibu~ZvFSoT?G4~*I=8-ZfmUN@@q1Tak3BER0SMbT^cX><*hpVRGsXc&*h`4cV07d=W$8HQqFvhp1JvMN0hIyTAIsL=|t^>QNz z(1L55@CIx#*tkC%XzbnzUyLyFP~Z0>j;&B?{5DHY(e`|jVXzaLNT`!prJ60SM?MQN zxbY;@j%Fx_dMr~(_y>NnF&%rP41(}@jMmB+_i2Qp%zy}ro7!v?)K>Fv|m zYVaGhzTXLcfz3Z?wE^4o?=hb4`gFxlq;{rjZ_d8GMb9?u!rODaJVnmyoqzLcjQ-&@ lrF(CVuCbKPJ*T?@?-Q~CH{b($0(?xrfOPs0ZjvUq{syrrbwvOG diff --git a/bin/Tokenizer.class b/bin/Tokenizer.class deleted file mode 100644 index 7fc9532033d887be06fa13becd1b79f7c40a97ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7254 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 Ku@0ZY=l=lEX`CVe diff --git a/bin/Vocabulary.class b/bin/Vocabulary.class deleted file mode 100644 index 43c999fd600027c77e2240e45a9c83e843c4e3c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5380 zcmeHLTW=dh6h7-XadzW2!6i^Gg^A0>;o<=86DgHwRToR^rmBr4l&A6T*q&r}#>~!! znjgYnK>`Wh`B8{7-jLYJZoH|SRER#z-sYQgKQm{~Uw{Ah2LOBncS=yO!0Ael_Tqr5 zaS4hRY#h)dx)V?_*xBnHFi%^sqU9kIkp(yQ-P75&R$L5raXRv(VmMvcZ&*;CfIG4& zeD>UeWw%8~26T@LuJ2oLtCm7!zcGPrcP%JBls+rLx&`Z}ydEhf)hfJZZT#}RKwdI9 zVm|R?IN|}-TnaK$vKO#0`kFYlSw}o7gw&+R$O&FcLWv%a*eghuT{=THu@EsfteYsP zCsB}M&pK&p!Xv_k&lLtrFh*1NnPS32=k%2f@%_gb=X_H40vbi6&jS`Yb_$oyP|2St zy700YJrZ$v**ucexNI(yq*yo;pP{Ra%SO~Yqyt8(m}d1Lpdr0`P$j-(5iyAsQtb_i z#&}`RN9g_O71hMWJRC`-$$@{EBIQehn6Tz@t~?ijnIy?YZ}C8pQ80aJ5O8H5}gi=H`4b7_-#_D-w3 zAYLsNN;Ph?LCC~B>nw=ngRy20;y%_4bBuK^(6P;QCWRxaxG5|W*q-vw;Wmq1glO%d zIRdka(OG_1E!(^pf4S1RGWA?dBLBri%awEA##%lMWW+M6(dpD{k0Z^}%1Ou0#VZ%6 z5lE_Y#o~Vj*-GE+9UD&p&6LQ@m*nSd{_Zm`vJ*O2kD4!e&aJGA6}MDvEWA0^<5}BF zqGlr&p7}?nfl*lXsh7Q3Ufqh!7`Vte)TKepTsoF<_8$A9Dm|mZm*Hb3n4)Ow^NsAl zb+}Q6HF({E&Dz;6iRo;tyIim*aoA(3WA+vcDlYb3g6{DFb^NiYha8(JW%sl(gZ-0@ z7SluNKc$L>484emo9Uet!^$~2Y3f+8G+@}o*{n6U&&st5?_02SeoqBkDi*9Fk>i%m zR+@h9-smL8P~2j~e?|qDYTHeerY&RTu?GJ9Td?MuU&%Xl(_lcUn!=MJ!g>sgj_){{ zT6sfkMAdLDCQAuE!4*@aOYqrDi|QG}-jiQ~`pnm4TSXhTcobois)IcrG}ualw!m)l zfuK58C{NXNp6;EsjC;I0?B3snF95~Cp4k#qU>R2MsRAWfo!o73@V<;=4a!h}Yxr~* zkwv^azr*z(DjUB-hqG0TiD3vC|IE6wH sKEO2v_z*tAJHQSO2QB_FY{RGUIr Date: Mon, 5 Aug 2024 16:31:19 -0500 Subject: [PATCH 5/5] Delete .classpath --- .classpath | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 .classpath diff --git a/.classpath b/.classpath deleted file mode 100644 index ac37fb2..0000000 --- a/.classpath +++ /dev/null @@ -1,5 +0,0 @@ - - - - -