commit 7a6b67a053a1837fff0f0f36546b1518c61454a7 Author: ModelHub XC Date: Wed Aug 5 22:37:23 2026 +0800 初始化项目,由ModelHub XC社区提供模型 Model: MainStack/marvy-1-14B Source: Original Platform diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9dc6a48 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,37 @@ +*.7z filter=lfs diff=lfs merge=lfs -text +*.arrow filter=lfs diff=lfs merge=lfs -text +*.bin filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.ckpt filter=lfs diff=lfs merge=lfs -text +*.ftz filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.h5 filter=lfs diff=lfs merge=lfs -text +*.joblib filter=lfs diff=lfs merge=lfs -text +*.lfs.* filter=lfs diff=lfs merge=lfs -text +*.mlmodel filter=lfs diff=lfs merge=lfs -text +*.model filter=lfs diff=lfs merge=lfs -text +*.msgpack filter=lfs diff=lfs merge=lfs -text +*.npy filter=lfs diff=lfs merge=lfs -text +*.npz filter=lfs diff=lfs merge=lfs -text +*.onnx filter=lfs diff=lfs merge=lfs -text +*.ot filter=lfs diff=lfs merge=lfs -text +*.parquet filter=lfs diff=lfs merge=lfs -text +*.pb filter=lfs diff=lfs merge=lfs -text +*.pickle filter=lfs diff=lfs merge=lfs -text +*.pkl filter=lfs diff=lfs merge=lfs -text +*.pt filter=lfs diff=lfs merge=lfs -text +*.pth filter=lfs diff=lfs merge=lfs -text +*.rar filter=lfs diff=lfs merge=lfs -text +*.safetensors filter=lfs diff=lfs merge=lfs -text +saved_model/**/* filter=lfs diff=lfs merge=lfs -text +*.tar.* filter=lfs diff=lfs merge=lfs -text +*.tar filter=lfs diff=lfs merge=lfs -text +*.tflite filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.wasm filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text +*tfevents* filter=lfs diff=lfs merge=lfs -text +tokenizer.json filter=lfs diff=lfs merge=lfs -text +marvy_vs_base_ppl.png filter=lfs diff=lfs merge=lfs -text diff --git a/CITATION.cff b/CITATION.cff new file mode 100644 index 0000000..facfdda --- /dev/null +++ b/CITATION.cff @@ -0,0 +1,28 @@ +cff-version: 1.2.0 +message: "If you use marvy-1-14B as a baseline, fine-tune it, distill from it, or evaluate against it, please cite this work and credit MainStack." +title: "marvy-1-14B: An open fine-tuned model for the full ServiceNow delivery lifecycle" +abstract: "marvy-1-14B is an Apache-2.0 fine-tune of Qwen2.5-14B-Instruct specialized for the full ServiceNow delivery lifecycle: business analysis, requirements, stakeholder mapping, systems inventory, solution design documents, user stories, implementation planning, test cases, and validation." +type: software +authors: + - name: "MainStack" + website: "https://www.mainstack.co.uk/" +url: "https://huggingface.co/MainStack/marvy-1-14B" +repository-artifact: "https://huggingface.co/MainStack/marvy-1-14B" +version: "1" +date-released: "2026-06-01" +license: Apache-2.0 +keywords: + - ServiceNow + - ITSM + - CSDM + - solution-design + - delivery + - qwen2.5 + - lora +references: + - type: software + title: "Qwen2.5-14B-Instruct" + authors: + - name: "Qwen Team, Alibaba Cloud" + url: "https://huggingface.co/Qwen/Qwen2.5-14B-Instruct" + license: Apache-2.0 diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/LICENSE-CC-BY-4.0 b/LICENSE-CC-BY-4.0 new file mode 100644 index 0000000..da6ab6c --- /dev/null +++ b/LICENSE-CC-BY-4.0 @@ -0,0 +1,396 @@ +Attribution 4.0 International + +======================================================================= + +Creative Commons Corporation ("Creative Commons") is not a law firm and +does not provide legal services or legal advice. Distribution of +Creative Commons public licenses does not create a lawyer-client or +other relationship. Creative Commons makes its licenses and related +information available on an "as-is" basis. Creative Commons gives no +warranties regarding its licenses, any material licensed under their +terms and conditions, or any related information. Creative Commons +disclaims all liability for damages resulting from their use to the +fullest extent possible. + +Using Creative Commons Public Licenses + +Creative Commons public licenses provide a standard set of terms and +conditions that creators and other rights holders may use to share +original works of authorship and other material subject to copyright +and certain other rights specified in the public license below. The +following considerations are for informational purposes only, are not +exhaustive, and do not form part of our licenses. + + Considerations for licensors: Our public licenses are + intended for use by those authorized to give the public + permission to use material in ways otherwise restricted by + copyright and certain other rights. Our licenses are + irrevocable. Licensors should read and understand the terms + and conditions of the license they choose before applying it. + Licensors should also secure all rights necessary before + applying our licenses so that the public can reuse the + material as expected. Licensors should clearly mark any + material not subject to the license. This includes other CC- + licensed material, or material used under an exception or + limitation to copyright. More considerations for licensors: + wiki.creativecommons.org/Considerations_for_licensors + + Considerations for the public: By using one of our public + licenses, a licensor grants the public permission to use the + licensed material under specified terms and conditions. If + the licensor's permission is not necessary for any reason--for + example, because of any applicable exception or limitation to + copyright--then that use is not regulated by the license. Our + licenses grant only permissions under copyright and certain + other rights that a licensor has authority to grant. Use of + the licensed material may still be restricted for other + reasons, including because others have copyright or other + rights in the material. A licensor may make special requests, + such as asking that all changes be marked or described. + Although not required by our licenses, you are encouraged to + respect those requests where reasonable. More considerations + for the public: + wiki.creativecommons.org/Considerations_for_licensees + +======================================================================= + +Creative Commons Attribution 4.0 International Public License + +By exercising the Licensed Rights (defined below), You accept and agree +to be bound by the terms and conditions of this Creative Commons +Attribution 4.0 International Public License ("Public License"). To the +extent this Public License may be interpreted as a contract, You are +granted the Licensed Rights in consideration of Your acceptance of +these terms and conditions, and the Licensor grants You such rights in +consideration of benefits the Licensor receives from making the +Licensed Material available under these terms and conditions. + + +Section 1 -- Definitions. + + a. Adapted Material means material subject to Copyright and Similar + Rights that is derived from or based upon the Licensed Material + and in which the Licensed Material is translated, altered, + arranged, transformed, or otherwise modified in a manner requiring + permission under the Copyright and Similar Rights held by the + Licensor. For purposes of this Public License, where the Licensed + Material is a musical work, performance, or sound recording, + Adapted Material is always produced where the Licensed Material is + synched in timed relation with a moving image. + + b. Adapter's License means the license You apply to Your Copyright + and Similar Rights in Your contributions to Adapted Material in + accordance with the terms and conditions of this Public License. + + c. Copyright and Similar Rights means copyright and/or similar rights + closely related to copyright including, without limitation, + performance, broadcast, sound recording, and Sui Generis Database + Rights, without regard to how the rights are labeled or + categorized. For purposes of this Public License, the rights + specified in Section 2(b)(1)-(2) are not Copyright and Similar + Rights. + + d. Effective Technological Measures means those measures that, in the + absence of proper authority, may not be circumvented under laws + fulfilling obligations under Article 11 of the WIPO Copyright + Treaty adopted on December 20, 1996, and/or similar international + agreements. + + e. Exceptions and Limitations means fair use, fair dealing, and/or + any other exception or limitation to Copyright and Similar Rights + that applies to Your use of the Licensed Material. + + f. Licensed Material means the artistic or literary work, database, + or other material to which the Licensor applied this Public + License. + + g. Licensed Rights means the rights granted to You subject to the + terms and conditions of this Public License, which are limited to + all Copyright and Similar Rights that apply to Your use of the + Licensed Material and that the Licensor has authority to license. + + h. Licensor means the individual(s) or entity(ies) granting rights + under this Public License. + + i. Share means to provide material to the public by any means or + process that requires permission under the Licensed Rights, such + as reproduction, public display, public performance, distribution, + dissemination, communication, or importation, and to make material + available to the public including in ways that members of the + public may access the material from a place and at a time + individually chosen by them. + + j. Sui Generis Database Rights means rights other than copyright + resulting from Directive 96/9/EC of the European Parliament and of + the Council of 11 March 1996 on the legal protection of databases, + as amended and/or succeeded, as well as other essentially + equivalent rights anywhere in the world. + + k. You means the individual or entity exercising the Licensed Rights + under this Public License. Your has a corresponding meaning. + + +Section 2 -- Scope. + + a. License grant. + + 1. Subject to the terms and conditions of this Public License, + the Licensor hereby grants You a worldwide, royalty-free, + non-sublicensable, non-exclusive, irrevocable license to + exercise the Licensed Rights in the Licensed Material to: + + a. reproduce and Share the Licensed Material, in whole or + in part; and + + b. produce, reproduce, and Share Adapted Material. + + 2. Exceptions and Limitations. For the avoidance of doubt, where + Exceptions and Limitations apply to Your use, this Public + License does not apply, and You do not need to comply with + its terms and conditions. + + 3. Term. The term of this Public License is specified in Section + 6(a). + + 4. Media and formats; technical modifications allowed. The + Licensor authorizes You to exercise the Licensed Rights in + all media and formats whether now known or hereafter created, + and to make technical modifications necessary to do so. The + Licensor waives and/or agrees not to assert any right or + authority to forbid You from making technical modifications + necessary to exercise the Licensed Rights, including + technical modifications necessary to circumvent Effective + Technological Measures. For purposes of this Public License, + simply making modifications authorized by this Section 2(a) + (4) never produces Adapted Material. + + 5. Downstream recipients. + + a. Offer from the Licensor -- Licensed Material. Every + recipient of the Licensed Material automatically + receives an offer from the Licensor to exercise the + Licensed Rights under the terms and conditions of this + Public License. + + b. No downstream restrictions. You may not offer or impose + any additional or different terms or conditions on, or + apply any Effective Technological Measures to, the + Licensed Material if doing so restricts exercise of the + Licensed Rights by any recipient of the Licensed + Material. + + 6. No endorsement. Nothing in this Public License constitutes or + may be construed as permission to assert or imply that You + are, or that Your use of the Licensed Material is, connected + with, or sponsored, endorsed, or granted official status by, + the Licensor or others designated to receive attribution as + provided in Section 3(a)(1)(A)(i). + + b. Other rights. + + 1. Moral rights, such as the right of integrity, are not + licensed under this Public License, nor are publicity, + privacy, and/or other similar personality rights; however, to + the extent possible, the Licensor waives and/or agrees not to + assert any such rights held by the Licensor to the limited + extent necessary to allow You to exercise the Licensed + Rights, but not otherwise. + + 2. Patent and trademark rights are not licensed under this + Public License. + + 3. To the extent possible, the Licensor waives any right to + collect royalties from You for the exercise of the Licensed + Rights, whether directly or through a collecting society + under any voluntary or waivable statutory or compulsory + licensing scheme. In all other cases the Licensor expressly + reserves any right to collect such royalties. + + +Section 3 -- License Conditions. + +Your exercise of the Licensed Rights is expressly made subject to the +following conditions. + + a. Attribution. + + 1. If You Share the Licensed Material (including in modified + form), You must: + + a. retain the following if it is supplied by the Licensor + with the Licensed Material: + + i. identification of the creator(s) of the Licensed + Material and any others designated to receive + attribution, in any reasonable manner requested by + the Licensor (including by pseudonym if + designated); + + ii. a copyright notice; + + iii. a notice that refers to this Public License; + + iv. a notice that refers to the disclaimer of + warranties; + + v. a URI or hyperlink to the Licensed Material to the + extent reasonably practicable; + + b. indicate if You modified the Licensed Material and + retain an indication of any previous modifications; and + + c. indicate the Licensed Material is licensed under this + Public License, and include the text of, or the URI or + hyperlink to, this Public License. + + 2. You may satisfy the conditions in Section 3(a)(1) in any + reasonable manner based on the medium, means, and context in + which You Share the Licensed Material. For example, it may be + reasonable to satisfy the conditions by providing a URI or + hyperlink to a resource that includes the required + information. + + 3. If requested by the Licensor, You must remove any of the + information required by Section 3(a)(1)(A) to the extent + reasonably practicable. + + 4. If You Share Adapted Material You produce, the Adapter's + License You apply must not prevent recipients of the Adapted + Material from complying with this Public License. + + +Section 4 -- Sui Generis Database Rights. + +Where the Licensed Rights include Sui Generis Database Rights that +apply to Your use of the Licensed Material: + + a. for the avoidance of doubt, Section 2(a)(1) grants You the right + to extract, reuse, reproduce, and Share all or a substantial + portion of the contents of the database; + + b. if You include all or a substantial portion of the database + contents in a database in which You have Sui Generis Database + Rights, then the database in which You have Sui Generis Database + Rights (but not its individual contents) is Adapted Material; and + + c. You must comply with the conditions in Section 3(a) if You Share + all or a substantial portion of the contents of the database. + +For the avoidance of doubt, this Section 4 supplements and does not +replace Your obligations under this Public License where the Licensed +Rights include other Copyright and Similar Rights. + + +Section 5 -- Disclaimer of Warranties and Limitation of Liability. + + a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE + EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS + AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF + ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, + IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, + WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR + PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, + ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT + KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT + ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. + + b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE + TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, + NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, + INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, + COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR + USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN + ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR + DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR + IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. + + c. The disclaimer of warranties and limitation of liability provided + above shall be interpreted in a manner that, to the extent + possible, most closely approximates an absolute disclaimer and + waiver of all liability. + + +Section 6 -- Term and Termination. + + a. This Public License applies for the term of the Copyright and + Similar Rights licensed here. However, if You fail to comply with + this Public License, then Your rights under this Public License + terminate automatically. + + b. Where Your right to use the Licensed Material has terminated under + Section 6(a), it reinstates: + + 1. automatically as of the date the violation is cured, provided + it is cured within 30 days of Your discovery of the + violation; or + + 2. upon express reinstatement by the Licensor. + + For the avoidance of doubt, this Section 6(b) does not affect any + right the Licensor may have to seek remedies for Your violations + of this Public License. + + c. For the avoidance of doubt, the Licensor may also offer the + Licensed Material under separate terms or conditions or stop + distributing the Licensed Material at any time; however, doing so + will not terminate this Public License. + + d. Sections 1, 5, 6, 7, and 8 survive termination of this Public + License. + + +Section 7 -- Other Terms and Conditions. + + a. The Licensor shall not be bound by any additional or different + terms or conditions communicated by You unless expressly agreed. + + b. Any arrangements, understandings, or agreements regarding the + Licensed Material not stated herein are separate from and + independent of the terms and conditions of this Public License. + + +Section 8 -- Interpretation. + + a. For the avoidance of doubt, this Public License does not, and + shall not be interpreted to, reduce, limit, restrict, or impose + conditions on any use of the Licensed Material that could lawfully + be made without permission under this Public License. + + b. To the extent possible, if any provision of this Public License is + deemed unenforceable, it shall be automatically reformed to the + minimum extent necessary to make it enforceable. If the provision + cannot be reformed, it shall be severed from this Public License + without affecting the enforceability of the remaining terms and + conditions. + + c. No term or condition of this Public License will be waived and no + failure to comply consented to unless expressly agreed to by the + Licensor. + + d. Nothing in this Public License constitutes or may be interpreted + as a limitation upon, or waiver of, any privileges and immunities + that apply to the Licensor or You, including from the legal + processes of any jurisdiction or authority. + + +======================================================================= + +Creative Commons is not a party to its public +licenses. Notwithstanding, Creative Commons may elect to apply one of +its public licenses to material it publishes and in those instances +will be considered the “Licensor.” The text of the Creative Commons +public licenses is dedicated to the public domain under the CC0 Public +Domain Dedication. Except for the limited purpose of indicating that +material is shared under a Creative Commons public license or as +otherwise permitted by the Creative Commons policies published at +creativecommons.org/policies, Creative Commons does not authorize the +use of the trademark "Creative Commons" or any other trademark or logo +of Creative Commons without its prior written consent including, +without limitation, in connection with any unauthorized modifications +to any of its public licenses or any other arrangements, +understandings, or agreements concerning use of licensed material. For +the avoidance of doubt, this paragraph does not form part of the +public licenses. + +Creative Commons may be contacted at creativecommons.org. + diff --git a/LICENSING.md b/LICENSING.md new file mode 100644 index 0000000..69fbc5a --- /dev/null +++ b/LICENSING.md @@ -0,0 +1,47 @@ +# Licensing — marvy-1-14B + +marvy-1-14B uses a **layered (dual) license** that reflects what is built on top +of an upstream open model versus what MainStack authored. + +| Component | License | What it covers | +|---|---|---| +| **Model weights** (`*.safetensors`, GGUF quants, LoRA adapter) | **Apache-2.0** | The fine-tuned weights. These are a derivative of Qwen2.5-14B-Instruct (Apache-2.0); per that license they remain Apache-2.0 and free to use, modify, and redistribute. | +| **MainStack original contributions** | **CC-BY-4.0** | The model cards, documentation (`USAGE.md`, `VALIDATION.md`, benchmark), the benchmark charts, the curated training-data methodology, and the pipeline framing authored by MainStack. | + +## What this means in practice + +### You may (under Apache-2.0, for the weights) +- Use marvy-1-14B commercially, privately, or in research. +- Fine-tune, distill, quantize, merge, or otherwise build on the weights. +- Redistribute the weights, including modified versions. + +…provided you **retain the `NOTICE` file** in derivatives and redistributions +(Apache-2.0 §4(d) — this is mandatory and carries the attribution request). + +### You must (under CC-BY-4.0, for our contributions) +If you reuse MainStack's **documentation, model cards, benchmark, or charts** — +e.g. copying our eval methodology, reproducing our charts, or lifting card text +into your own model — you must give **attribution**: credit "MainStack" and link +to https://huggingface.co/MainStack/marvy-1-14B. This is a binding condition of +CC-BY-4.0, not just a request. + +### We ask (attribution for the model) +If you use marvy-1-14B **as a baseline, a starting point for your own fine-tune, +a distillation source, or an evaluation comparison**, please credit MainStack +and cite the entry in the model card. See `NOTICE` and the card's Citation +section. + +## Why the weights can't be more restricted + +Qwen2.5-14B-Instruct is released under Apache-2.0, which grants every recipient +an irrevocable, royalty-free right to use and redistribute. A fine-tune cannot +revoke those rights on the resulting weights. MainStack's protection therefore +lives where it legally can: (1) the CC-BY-4.0 license on our **own** authored +materials, and (2) the Apache-2.0 **NOTICE** that must travel with the weights. + +## Files +- `LICENSE` — Apache-2.0 (governs the weights; inherited from the base model). +- `LICENSE-CC-BY-4.0` — CC-BY-4.0 (governs MainStack's documentation and other + original contributions). +- `NOTICE` — required attribution notices (retain in derivatives). +- `CITATION.cff` — citation metadata. diff --git a/NOTICE b/NOTICE new file mode 100644 index 0000000..a704580 --- /dev/null +++ b/NOTICE @@ -0,0 +1,80 @@ +marvy-1-14B +Copyright 2026 MainStack + +This product is licensed under the Apache License, Version 2.0 (the "License"). +You may obtain a copy of the License in the accompanying LICENSE file or at: + + http://www.apache.org/licenses/LICENSE-2.0 + +================================================================================ +Attribution request (downstream use) +================================================================================ + +marvy-1-14B was created by MainStack (https://huggingface.co/MainStack). + +If you use marvy-1-14B as a baseline, fine-tune it, distill from it, evaluate +against it, or otherwise build on it, please credit MainStack and link to: + + https://huggingface.co/MainStack/marvy-1-14B + +Under the Apache License, Version 2.0, this NOTICE file MUST be retained and +reproduced in any derivative works and redistributions (License §4(d)). + +================================================================================ +Dual licensing +================================================================================ + + * Model weights (safetensors / GGUF / LoRA adapter): Apache-2.0 (LICENSE). + * MainStack original contributions — model cards, documentation, benchmark, + charts, and curated training methodology: CC-BY-4.0 (LICENSE-CC-BY-4.0). + +Reuse of MainStack's contributions requires attribution to MainStack under the +terms of CC-BY-4.0. See LICENSING.md for the full breakdown. + +================================================================================ +Attribution +================================================================================ + +marvy-1-14B is a fine-tuned derivative of: + + Qwen2.5-14B-Instruct + Copyright Alibaba Cloud / Qwen Team + Licensed under the Apache License, Version 2.0 + https://huggingface.co/Qwen/Qwen2.5-14B-Instruct + +The base model weights are the property of their respective authors and are +used and redistributed in modified (fine-tuned) form under the terms of the +Apache License, Version 2.0. + +Citation for the base model: + + @misc{qwen2.5, + title = {Qwen2.5: A Party of Foundation Models}, + author = {Qwen Team}, + year = {2024}, + url = {https://qwenlm.github.io/blog/qwen2.5/} + } + + @article{qwen2, + title = {Qwen2 Technical Report}, + author = {Qwen Team}, + journal= {arXiv preprint arXiv:2407.10671}, + year = {2024} + } + +================================================================================ +Tooling +================================================================================ + +Trained and fused with MLX-LM (https://github.com/ml-explore/mlx-lm), +Copyright Apple Inc., licensed under the MIT License. + +================================================================================ +Training data provenance +================================================================================ + +marvy-1-14B was fine-tuned on a corpus of anonymized ServiceNow delivery +artifacts. All customer and partner names were replaced with stable aliases, +and emails, hostnames, IP addresses, and credential-bearing files were removed +or redacted prior to training. No customer-identifying information is present +in the training corpus. See the model card for the full redaction methodology. diff --git a/README.md b/README.md new file mode 100644 index 0000000..31c6edf --- /dev/null +++ b/README.md @@ -0,0 +1,350 @@ +--- +license: apache-2.0 +base_model: Qwen/Qwen2.5-14B-Instruct +base_model_relation: finetune +library_name: transformers +pipeline_tag: text-generation +language: + - en +tags: + - servicenow + - itsm + - csdm + - itom + - delivery + - solution-design + - user-stories + - business-analysis + - qwen2.5 + - lora + - sft + - mlx +model-index: + - name: marvy-1-14B + results: + - task: + type: text-generation + name: Text Generation + dataset: + type: custom + name: ServiceNow Delivery SFT (project-disjoint test split) + metrics: + - type: perplexity + value: 13.107 + name: Test perplexity + - type: loss + value: 2.573 + name: Test cross-entropy loss +--- + +# marvy-1-14B + +**The first open, fine-tuned LLM for the full ServiceNow delivery lifecycle — from business analysis to validation.** + +marvy-1-14B is an open-source language model fine-tuned for the complete ServiceNow delivery lifecycle: business analysis, requirements, stakeholder mapping, systems inventory, Solution Design Documents, user stories with acceptance criteria, implementation planning, test cases, and validation. Where general-purpose models treat ServiceNow as one topic among many, marvy is built to draft the actual artifacts a delivery team produces — in the structure and sequence real engagements follow. It is a first-draft specialist, not a consultant replacement, and it is not an agentic or tool-use fine-tune. + +It was built by [MainStack](https://huggingface.co/MainStack), a consultancy specializing in ServiceNow Agentic Delivery. marvy is a LoRA SFT fine-tune of [Qwen2.5-14B-Instruct](https://huggingface.co/Qwen/Qwen2.5-14B-Instruct) (Apache-2.0), trained on ~1,958 anonymized artifacts from real engagements (~887k tokens), rigorously redacted to zero residual PII per an automated leakage scanner. Its test perplexity of 13.107 was measured on a project- and customer-disjoint held-out split — the model generalizes to unseen work rather than memorizing the training set. + +> Released under **Apache-2.0**. Built with Qwen — see `NOTICE`. + +## Why marvy-1-14B + +- **Drafts the full lifecycle, not just snippets.** Business analysis through validation — the artifacts and sequence real delivery teams actually work in. +- **OOTB-first and implementation-grade.** Tuned to favor out-of-the-box correctness and produce drafts you can review, not rewrite. +- **Runs locally and privately.** Merged FP16, a LoRA adapter, and GGUF quants — run it on Apple Silicon via LM Studio or Ollama, with your engagement data never leaving your machine. +- **Trained on real, anonymized delivery work.** ~1,958 redacted engagement artifacts (~887k tokens), with zero residual PII verified by an automated leakage scanner. +- **Open and Apache-2.0.** Built on Qwen2.5-14B-Instruct — inspect it, fine-tune it, and deploy it on your own terms. + +📖 **Full docs:** [`USAGE.md`](./USAGE.md) (every runtime + OpenCode wiring) · +[`VALIDATION.md`](./VALIDATION.md) (prove the fine-tune works) · +[`validate.sh`](./validate.sh) (one-command probe harness) + +--- + +## Quick start + +### Transformers + +```python +from transformers import AutoTokenizer, AutoModelForCausalLM + +model_id = "MainStack/marvy-1-14B" +tok = AutoTokenizer.from_pretrained(model_id) +model = AutoModelForCausalLM.from_pretrained(model_id, torch_dtype="auto", device_map="auto") + +SYSTEM = ( + "You are a senior ServiceNow delivery consultant. You produce precise, " + "implementation-grade artifacts: business analyses, requirements, solution " + "design documents, user stories with acceptance criteria, test cases, and " + "validation reviews. You favor out-of-the-box capabilities, cite concrete " + "tables/plugins/sys_ids when relevant, and write in clear professional English." +) + +messages = [ + {"role": "system", "content": SYSTEM}, + {"role": "user", "content": "Write a ServiceNow user story with acceptance criteria for SLA escalation on P1 incidents."}, +] +inputs = tok.apply_chat_template(messages, add_generation_prompt=True, return_tensors="pt").to(model.device) +out = model.generate(inputs, max_new_tokens=1024, temperature=0.4) +print(tok.decode(out[0][inputs.shape[-1]:], skip_special_tokens=True)) +``` + +### vLLM + +```bash +pip install vllm +vllm serve MainStack/marvy-1-14B +``` + +### Ollama (via GGUF) + +Use the companion repo [`MainStack/marvy-1-14B-GGUF`](https://huggingface.co/MainStack/marvy-1-14B-GGUF): + +```bash +ollama run hf.co/MainStack/marvy-1-14B-GGUF:Q4_K_M +``` + +### MLX (Apple Silicon native) + +```bash +pip install mlx-lm +python -m mlx_lm generate --model MainStack/marvy-1-14B \ + --system-prompt "You are a senior ServiceNow delivery consultant..." \ + --prompt "Draft the Platform Architecture section of an ITSM SDD." \ + --max-tokens 1024 --temp 0.4 +``` + +### LoRA-only (apply on top of the base) + +If you prefer a tiny adapter (~175 MB) on top of the BF16 base, see [`MainStack/marvy-1-14B-lora`](https://huggingface.co/MainStack/marvy-1-14B-lora). + +--- + +## Intended use + +marvy-1-14B is designed to produce implementation-grade first drafts across the ServiceNow delivery lifecycle — accelerating the artifacts a practitioner would otherwise write from scratch, then review and refine. Built for solution architects, business analysts, technical consultants, and project managers. Typical tasks: + +| Task family | What it produces | +|------------------------|---------------------------------------------------------------------------------| +| `business_analysis` | Structured BA reports from SOWs / discovery notes | +| `requirements_extraction` | Functional/non-functional requirements with acceptance bullets | +| `stakeholder_mapping` | RACI / influence-interest grids from raw notes | +| `systems_inventory` | CMDB-shaped systems inventories from architecture inputs | +| `sdd_design` | Solution Design Document sections (architecture, integrations, data model) | +| `story_authoring` | User stories with crisp acceptance criteria | +| `implementation_planning` | Story-level implementation plans citing tables/plugins | +| `test_case_generation` | Test cases per story, mapped to acceptance criteria | +| `validation_critique` | Gap analysis, follow-up questions, assumption checks against source docs | +| `delivery_chain` | Multi-turn: story → implementation → test, end-to-end | + +### Recommended system prompt + +``` +You are a senior ServiceNow delivery consultant. You produce precise, implementation-grade +artifacts: business analyses, requirements, solution design documents, user stories with +acceptance criteria, test cases, and validation reviews. You favor out-of-the-box +capabilities, cite concrete tables/plugins/sys_ids when relevant, and write in clear +professional English. +``` + +### Recommended generation settings + +| Use case | temperature | top_p | max_new_tokens | +|-----------------------------|-------------|-------|----------------| +| Structured artifacts (SDD, stories) | 0.3 – 0.5 | 0.9 | 1024 – 4096 | +| Exploratory brainstorming | 0.7 – 0.9 | 0.95 | 1024 | +| Validation / critique | 0.2 – 0.4 | 0.9 | 1024 – 2048 | + +--- + +## Training data + +> **The training dataset is proprietary to MainStack and is not publicly +> released.** It is derived from confidential, anonymized client engagement +> artifacts. The statistics below describe the corpus for transparency; the data +> itself is not distributed with the model. + +| Item | Value | +|---|---| +| Source | Anonymized real engagement artifacts (`.md`, `.csv`, `.json`, `.mmd`, `.txt`) | +| Availability | **Proprietary — not released** | +| Total records | **1,958** (after schema + exact-dedupe) | +| Estimated tokens | **~887k** | +| Splits (project-disjoint) | train 1,359 · val 347 · test 252 | +| Tasks | 11 task families (see table above) | +| Multi-turn share | `delivery_chain` (158 records) — story→implementation→test | + +### Privacy & redaction + +- All customer/partner names → stable aliases (e.g. `Customer-FIN-03`, `Customer-ENERGY-01`). +- Emails → `user@example.com`; hostnames → `instance.example.service-now.com`; IPs → RFC 5737 range; `key: value` secrets → `[REDACTED]`. +- Credential/login/VPN files excluded entirely; bulk CMDB dumps >1.5 MB excluded. +- ServiceNow `sys_id`s and table/plugin names preserved (instance-local, technically valuable, low risk). +- A leakage scanner asserts **0** residual emails, hostnames, or mapped real names in message content. + +### Split integrity + +Train / val / test are split **by project**, so no customer appears in more than one split. The largest project is forced into `train` to keep eval honest: +- val projects: `Customer-ENERGY-01` +- test projects: `Customer-CHEM-01`, `Customer-FININST-01` + +--- + +## Training procedure + +| Setting | Value | +|---|---| +| Method | LoRA SFT (QLoRA-style: LoRA on 4-bit base) | +| Base model | `mlx-community/Qwen2.5-14B-Instruct-4bit` (training) → fused onto `Qwen/Qwen2.5-14B-Instruct` BF16 (release) | +| Framework | [MLX-LM](https://github.com/ml-explore/mlx-lm) 0.31.3 | +| Hardware | Apple Silicon (M-series), Metal | +| Max sequence length | 8,192 | +| Batch size / grad accum | 1 / 16 (effective batch 16) | +| Iterations | 350 (~4 epochs over 1,359 train records) | +| Optimizer | AdamW, cosine decay, warmup 20, lr 1e-4 → 1e-6 | +| LoRA rank / scale / dropout | 32 / 20.0 / 0.0 | +| LoRA target keys | `q_proj`, `k_proj`, `v_proj`, `o_proj`, `gate_proj`, `up_proj`, `down_proj` | +| Adapted layers | top 16 transformer layers | +| Prompt masking | yes — loss computed only on assistant turns | +| Seed | 42 | + +--- + +## Evaluation + +### Fine-tuned vs. base — efficiency on the held-out test set + +The cleanest measure of the fine-tune's value is to score the **same base +model twice** — plain vs. with the marvy adapter — on the **project-disjoint** +test split (252 records from two customers never seen in training/val), using +per-token cross-entropy/perplexity on the **assistant tokens only** +(prompt-masked, the same objective used in training). Lower perplexity = the +model assigns higher probability to the real, human-authored delivery artifact. + +![marvy-1-14B vs base — perplexity by task](./marvy_vs_base_ppl.png) + +![How much fine-tuning improved each task](./marvy_improvement.png) + +**Overall: perplexity 8.91 → 6.03, a 32.3% reduction** on unseen customers. + +| Task | Base ppl | marvy-1-14B ppl | Improvement | +|---|---:|---:|---:| +| Systems inventory | 77.07 | 10.53 | **−86.3%** | +| Requirements extraction | 46.76 | 9.39 | **−79.9%** | +| Stakeholder mapping | 27.81 | 6.91 | **−75.2%** | +| Story authoring | 15.38 | 7.86 | **−48.9%** | +| Validation / critique | 9.72 | 8.23 | −15.3% | +| Business analysis | 7.14 | 6.66 | −6.6% | +| SDD design | 4.48 | 4.40 | −1.7% | +| **Overall** | **8.91** | **6.03** | **−32.3%** | + +The gains are largest on **structured, format-heavy artifacts** (inventories, +requirements, stakeholder registers, stories) where the base model wanders from +the expected schema; they are smaller on long-form prose (SDD sections, business +analysis) where the base was already competent. This is the honest, expected +shape of a domain SFT. + +> Notes: the test customers (`Customer-CHEM-01`, `Customer-FININST-01`) appear in +> neither train nor val, so this reflects generalization, not memorization. The +> test split happens to cover 7 of the 11 task families. An earlier MLX +> batch-eval reported aggregate ppl ≈ 13.1 with 2,048-token truncation; the +> figures above recompute per-task with full assistant-token masking, so the +> base-vs-marvy **delta** is the result of interest. + +Reproduce it yourself: `bash benchmark/run_benchmark.sh` (see +[`VALIDATION.md`](./VALIDATION.md) for qualitative probes too). + +--- + +## Limitations & known issues + +- **Text-only sources.** SOWs/SDDs/workbooks in `.docx/.pptx/.pdf/.xlsx` are not parsed in this build. Coverage of binary-only engagements is therefore thin. +- **Project concentration.** ~95% of records come from ~12 data-rich projects; the long tail contributes a single case study each. Some task families (e.g. `case_study`, `validation_critique`) are smaller and may exhibit higher variance. +- **Synthetic instructions.** User prompts are templated paraphrases (3–5 variants per task); assistant outputs are the original human-authored artifacts. +- **English-only.** The corpus is English. +- **Not a replacement for a consultant.** Output is first-draft, implementation-grade content that requires expert review before client delivery or production use. +- **No tool use / function calling fine-tune.** `marvy-1-14B` is a text-completion specialist; agentic tool use is left to the orchestrator. +- **Hallucination risk on instance-specific facts.** The model will confidently invent `sys_id`s, plugin IDs, and table fields if asked about specifics it has not seen. Always verify against an actual ServiceNow instance. +- **No safety fine-tune beyond the base.** Inherits Qwen2.5-14B-Instruct safety behavior; no additional RLHF. + +--- + +## License + +marvy-1-14B is **dual-licensed** — see [`LICENSING.md`](./LICENSING.md) for the full breakdown: + +| Component | License | +|---|---| +| **Model weights** (safetensors / GGUF / LoRA) | **Apache-2.0** (`LICENSE`) — inherited from the Qwen2.5-14B-Instruct base; free to use, fine-tune, and redistribute, with `NOTICE` retained. | +| **MainStack contributions** (model cards, docs, benchmark, charts, training methodology) | **CC-BY-4.0** (`LICENSE-CC-BY-4.0`) — reuse requires attribution to MainStack. | + +The model weights are a derivative of **Qwen2.5-14B-Instruct** (Apache-2.0). +Per Apache-2.0, the weights cannot be placed under a more restrictive license; +MainStack's protection is the CC-BY-4.0 license on our own authored materials +plus the mandatory `NOTICE` retention. See `NOTICE` for attribution. + +## Attribution + +`marvy-1-14B` is free to use, fine-tune, and redistribute under Apache-2.0. +**If you use marvy-1-14B as a baseline, fine-tune it, distill from it, evaluate +against it, or otherwise build on it, please credit MainStack** and link back to +this model: + +> Built on / evaluated against **marvy-1-14B** by **MainStack** — +> https://huggingface.co/MainStack/marvy-1-14B + +Concretely, we ask that derivatives and comparisons: + +- keep the `NOTICE` file intact (this is **required** by Apache-2.0 §4), +- name `MainStack/marvy-1-14B` in the model card, paper, or README, and +- cite the entry below. + +Per Apache-2.0, you must also continue to attribute the upstream base model +(Qwen2.5-14B-Instruct) — see `NOTICE`. + +## Citation + +If you use marvy-1-14B (as a baseline, a starting point, or in evaluation), +please cite: + +```bibtex +@software{marvy_1_14b_2026, + title = {marvy-1-14B: An open fine-tuned model for the full ServiceNow delivery lifecycle}, + author = {MainStack}, + year = {2026}, + publisher = {Hugging Face}, + url = {https://huggingface.co/MainStack/marvy-1-14B}, + note = {Fine-tune of Qwen2.5-14B-Instruct}, + license = {Apache-2.0} +} + +@misc{qwen2.5, + title = {Qwen2.5: A Party of Foundation Models}, + author = {Qwen Team}, + year = {2024}, + url = {https://qwenlm.github.io/blog/qwen2.5/} +} +``` + +```bibtex +@software{marvy_14b_2026, + title = {marvy-1-14B: A ServiceNow delivery lifecycle fine-tune of Qwen2.5-14B-Instruct}, + author = {MainStack}, + year = {2026}, + url = {https://huggingface.co/MainStack/marvy-1-14B}, + license= {Apache-2.0} +} + +@misc{qwen2.5, + title = {Qwen2.5: A Party of Foundation Models}, + author = {Qwen Team}, + year = {2024}, + url = {https://qwenlm.github.io/blog/qwen2.5/} +} +``` + +## Acknowledgements + +- **Qwen team** at Alibaba Cloud for the Qwen2.5 family. +- **Apple MLX team** for `mlx` and `mlx-lm`, enabling native Apple Silicon training. +- **Hugging Face** for hosting and the surrounding ecosystem. diff --git a/USAGE.md b/USAGE.md new file mode 100644 index 0000000..44dcd1f --- /dev/null +++ b/USAGE.md @@ -0,0 +1,191 @@ +# Using marvy-1-14B + +marvy-1-14B is a ServiceNow delivery specialist. This guide covers every common +way to run it — cloud or fully local — plus how to wire it into OpenCode. + +- [Choosing a format](#choosing-a-format) +- [Recommended system prompt & settings](#recommended-system-prompt--settings) +- [Transformers (PyTorch)](#transformers-pytorch) +- [vLLM (OpenAI-compatible server)](#vllm-openai-compatible-server) +- [MLX (Apple Silicon, native)](#mlx-apple-silicon-native) +- [LM Studio (GUI + local server)](#lm-studio-gui--local-server) +- [Ollama / llama.cpp (GGUF)](#ollama--llamacpp-gguf) +- [LoRA adapter (apply on the base)](#lora-adapter-apply-on-the-base) +- [Use marvy-1-14B in OpenCode](#use-marvy-14b-in-opencode) +- [Prompt recipes per task](#prompt-recipes-per-task) + +--- + +## Choosing a format + +| You want… | Use | Repo | +|---|---|---| +| Max quality, GPU/server | Merged FP16 | `MainStack/marvy-1-14B` | +| Apple Silicon, native speed | Merged (MLX) | `MainStack/marvy-1-14B` | +| Laptop / CPU / Ollama / LM Studio | GGUF (Q4_K_M or Q8_0) | `MainStack/marvy-1-14B-GGUF` | +| Smallest download, compose yourself | LoRA adapter (~175 MB) | `MainStack/marvy-1-14B-lora` | + +--- + +## Recommended system prompt & settings + +Always lead with the delivery-consultant system prompt — marvy was trained with it: + +``` +You are a senior ServiceNow delivery consultant. You produce precise, implementation-grade +artifacts: business analyses, requirements, solution design documents, user stories with +acceptance criteria, test cases, and validation reviews. You favor out-of-the-box +capabilities, cite concrete tables/plugins/sys_ids when relevant, and write in clear +professional English. +``` + +| Use case | temperature | top_p | max_tokens | +|---|---|---|---| +| Structured artifacts (SDD, stories, test cases) | 0.3 – 0.5 | 0.9 | 1024 – 4096 | +| Exploratory brainstorming | 0.7 – 0.9 | 0.95 | 1024 | +| Validation / critique | 0.2 – 0.4 | 0.9 | 1024 – 2048 | + +--- + +## Transformers (PyTorch) + +```python +from transformers import AutoTokenizer, AutoModelForCausalLM + +model_id = "MainStack/marvy-1-14B" +tok = AutoTokenizer.from_pretrained(model_id) +model = AutoModelForCausalLM.from_pretrained(model_id, torch_dtype="auto", device_map="auto") + +SYSTEM = "You are a senior ServiceNow delivery consultant. ..." # full prompt above +messages = [ + {"role": "system", "content": SYSTEM}, + {"role": "user", "content": "Write a user story with acceptance criteria for P1 SLA escalation."}, +] +inputs = tok.apply_chat_template(messages, add_generation_prompt=True, return_tensors="pt").to(model.device) +out = model.generate(inputs, max_new_tokens=1024, temperature=0.4, top_p=0.9) +print(tok.decode(out[0][inputs.shape[-1]:], skip_special_tokens=True)) +``` + +## vLLM (OpenAI-compatible server) + +```bash +pip install vllm +vllm serve MainStack/marvy-1-14B --served-model-name marvy-1-14B +``` + +```bash +curl -s http://localhost:8000/v1/chat/completions -H "Content-Type: application/json" -d '{ + "model": "marvy-1-14B", "temperature": 0.4, + "messages": [ + {"role":"system","content":"You are a senior ServiceNow delivery consultant. ..."}, + {"role":"user","content":"Draft the Incident Management section of an SDD."} + ]}' +``` + +## MLX (Apple Silicon, native) + +```bash +pip install mlx-lm + +# one-off +python -m mlx_lm generate --model MainStack/marvy-1-14B \ + --system-prompt "You are a senior ServiceNow delivery consultant. ..." \ + --prompt "Write test cases for a Major Incident workflow." --max-tokens 1024 --temp 0.4 + +# OpenAI-compatible server +python -m mlx_lm server --model MainStack/marvy-1-14B --port 8080 +``` + +## LM Studio (GUI + local server) + +1. **Install the model** — either search `MainStack/marvy-1-14B-GGUF` in the + in-app model browser, or place a local copy under + `~/.lmstudio/models/MainStack/marvy-1-14B/` (MLX or GGUF layout). +2. **Load** it from the GUI, or: + ```bash + lms load MainStack/marvy-1-14B + lms server start # OpenAI-compatible on http://localhost:1234/v1 + ``` +3. In the Chat tab, set the system prompt (above) and temperature ~0.4. + +## Ollama / llama.cpp (GGUF) + +```bash +# Ollama — pull straight from the Hub +ollama run hf.co/MainStack/marvy-1-14B-GGUF:Q4_K_M + +# llama.cpp +llama-cli -hf MainStack/marvy-1-14B-GGUF:Q4_K_M \ + -p "Write a user story with acceptance criteria for P1 SLA escalation." --temp 0.4 +``` + +| Quant | Size | Use when | +|---|---|---| +| `Q4_K_M` | ~9 GB | Default — best size/quality balance | +| `Q8_0` | ~16 GB | Highest fidelity, near-FP16 | + +## LoRA adapter (apply on the base) + +```bash +# MLX +python -m mlx_lm generate --model Qwen/Qwen2.5-14B-Instruct \ + --adapter-path . --system-prompt "You are a senior ServiceNow delivery consultant. ..." \ + --prompt "Validate this requirement and list follow-up questions: ..." --max-tokens 1024 +``` + +```python +# PEFT +from peft import PeftModel +from transformers import AutoModelForCausalLM, AutoTokenizer +base = "Qwen/Qwen2.5-14B-Instruct" +model = AutoModelForCausalLM.from_pretrained(base, torch_dtype="auto", device_map="auto") +model = PeftModel.from_pretrained(model, "MainStack/marvy-1-14B-lora") +``` + +--- + +## Use marvy-1-14B in OpenCode + +marvy runs behind any OpenAI-compatible endpoint (LM Studio, mlx_lm server, +vLLM). Register it as a custom provider in `opencode.json`. + +1. **Start a local server** (LM Studio shown; adjust port for others): + ```bash + lms load MainStack/marvy-1-14B && lms server start # http://localhost:1234/v1 + ``` +2. **Add the provider** to your project `opencode.json` (or global + `~/.config/opencode/opencode.json`): + ```jsonc + { + "provider": { + "lmstudio": { + "npm": "@ai-sdk/openai-compatible", + "name": "LM Studio (local)", + "options": { "baseURL": "http://localhost:1234/v1" }, + "models": { + "marvy-1-14B": { "name": "marvy-1-14B (ServiceNow delivery)" } + } + } + } + } + ``` +3. **Select** `lmstudio/marvy-1-14B` in the OpenCode model picker. + +> marvy-1-14B is a drafting specialist, not a tool-use/agentic fine-tune. It excels +> at producing delivery artifacts inside chat; for MCP tool-calling agent loops, +> keep a frontier model as the orchestrator and switch to marvy for drafting. + +--- + +## Prompt recipes per task + +| Task | Prompt skeleton | +|---|---| +| Business analysis | "Produce a Business Analysis for the following engagement: . Cover organization, IT landscape, scope, and risks." | +| Requirements | "Extract structured requirements (id, category, requirement, priority, target_phase, success_metric) from: ." | +| Stakeholders | "Build a stakeholder register (role, name, interest, influence, RACI) for: ." | +| SDD section | "Write the
section of a Solution Design Document for a ServiceNow implementation. Include design decisions and concrete tables/plugins." | +| User story | "Write a ServiceNow user story with acceptance criteria for: ." | +| Implementation plan | "Given this story, describe the implementation: tables, plugins, configuration, records touched, manual follow-ups. Story: ." | +| Test case | "Write a test case (pre-conditions, steps, expected results, pass/fail) for the story: ." | +| Validation | "Validate this artifact against ServiceNow best practice and the SOW. List gaps, risks, and follow-up questions. Artifact: ." | diff --git a/VALIDATION.md b/VALIDATION.md new file mode 100644 index 0000000..fa0b87a --- /dev/null +++ b/VALIDATION.md @@ -0,0 +1,138 @@ +# Validating marvy-1-14B + +This guide gives you three independent ways to confirm the fine-tune actually +learned the ServiceNow delivery style — from a 60-second smoke test to a +quantitative base-vs-marvy comparison on a held-out, customer-disjoint test set. + +> TL;DR: run `bash docs/validate.sh` (from the model repo) for the quick path, +> or follow the manual steps below. + +--- + +## What "working" means here + +marvy-1-14B is a **specialist drafting model**. A successful fine-tune should show: + +1. **Format fidelity** — it emits the delivery artifact shape on cue (user + stories with acceptance criteria, SDD sections, test cases with + pre-conditions/steps/expected results) without being told the structure. +2. **Domain voice** — OOTB-first framing, ServiceNow tables/plugins, ITIL/CSDM + vocabulary, `sys_id` citations where relevant. +3. **Lower loss than the base** on held-out ServiceNow delivery text. + +The base model (Qwen2.5-14B-Instruct) is a strong generalist and will produce +*plausible* answers — the point of validation is to show marvy is **more +on-format, more domain-specific, and lower-perplexity** on this task. + +--- + +## Test 1 — 60-second smoke test (qualitative) + +Prompt the model with a bare instruction and check it produces a correctly +structured artifact with no format coaching. + +### LM Studio (local) + +```bash +lms load MainStack/marvy-1-14B +lms server start # OpenAI-compatible on http://localhost:1234/v1 + +curl -s http://localhost:1234/v1/chat/completions \ + -H "Content-Type: application/json" \ + -d '{ + "model": "marvy-1-14B", + "temperature": 0.4, + "messages": [ + {"role": "system", "content": "You are a senior ServiceNow delivery consultant. You produce precise, implementation-grade artifacts and favor out-of-the-box capabilities."}, + {"role": "user", "content": "Write a user story with acceptance criteria for auto-escalating P1 incidents that breach a 15-minute response SLA."} + ] + }' | python3 -c "import sys,json;print(json.load(sys.stdin)['choices'][0]['message']['content'])" +``` + +### MLX (Apple Silicon) + +```bash +python -m mlx_lm generate --model MainStack/marvy-1-14B \ + --system-prompt "You are a senior ServiceNow delivery consultant..." \ + --prompt "Write a user story with acceptance criteria for auto-escalating P1 incidents that breach a 15-minute response SLA." \ + --max-tokens 512 --temp 0.4 +``` + +### Pass criteria + +- [ ] Output is a **user story** (`As a … I want … so that …`) followed by + discrete, testable **acceptance criteria**. +- [ ] References ServiceNow concretely (e.g. `incident`, SLA definitions, + `sla_definition`, escalation/notification, assignment groups). +- [ ] No meta-chatter ("Sure, here is…") dominating the answer; it reads like a + backlog item, not a chatbot reply. + +--- + +## Test 2 — Task-coverage probes (qualitative, one per skill) + +Run each prompt with the recommended system prompt. Each should yield the +artifact named, in the right shape. + +| # | Prompt | Expect | +|---|--------|--------| +| 1 | "Draft the Incident Management section of an SDD for a greenfield ITSM implementation. Include assignment rules and SLA design." | SDD section: architecture/process, assignment rules (condition/action/order), SLA table | +| 2 | "Extract structured requirements (id, category, priority, target phase, success metric) from: 'We need to replace email-based access requests with a catalog item routed for manager approval.'" | Tabular/structured requirements with priorities & metrics | +| 3 | "Write a test case for the story: 'Restrict the Assignment Group field on incidents to groups with the itil role.'" | Test case: pre-conditions, steps, expected results, pass/fail | +| 4 | "We are migrating CMDB to CSDM. Produce the foundation-data load sequence and the CI classes involved." | CSDM/CMDB sequence, classes (cmdb_ci_*), foundation order | +| 5 | "Validate this requirement against best practice and list follow-up questions: 'All incidents must auto-close after 3 days.'" | Critique + concrete follow-up questions + risks | + +### Pass criteria +At least **4 of 5** produce the correct artifact type with ServiceNow-specific, +implementation-grade content (not generic ITSM prose). + +--- + +## Test 3 — Quantitative: base vs marvy on the held-out test set + +This is the strongest signal. The test split is **customer-disjoint** — two +customers that never appear in training or validation — so it measures +generalization, not memorization. + +### With the MLX training kit (in the source repo) + +```bash +cd training + +# marvy (fine-tuned adapter on the base) +python -m mlx_lm lora \ + --model mlx-community/Qwen2.5-14B-Instruct-4bit \ + --adapter-path train/adapters \ + --data train/data --test --test-batches 50 +# -> Test loss 2.573, Test ppl 13.107 (lower is better) + +# base (no adapter) for comparison +python -m mlx_lm lora \ + --model mlx-community/Qwen2.5-14B-Instruct-4bit \ + --data train/data --test --test-batches 50 +# -> expect a HIGHER loss/ppl than marvy +``` + +### Pass criteria +- [ ] marvy's **test perplexity is meaningfully lower** than the base on the + same held-out split. +- [ ] No data leakage: the test customers (`Customer-CHEM-01`, + `Customer-FININST-01`) are absent from `train.jsonl` / `valid.jsonl`. + +> Reference result for this release: **test loss 2.573 / ppl 13.107** on 50 +> batches of the project-disjoint test split (two sequences >2048 tokens are +> truncated by the eval harness, so this is a slight upper bound). + +--- + +## Interpreting results + +| Symptom | Likely cause | Action | +|---|---|---| +| Generic ITSM prose, no ServiceNow specifics | wrong/short system prompt | use the full recommended system prompt; temp 0.3–0.5 | +| Rambling, no artifact structure | temperature too high | lower to 0.3–0.4 | +| Invents `sys_id`s / plugin IDs | expected limitation | verify against a real instance; never trust IDs blindly | +| marvy ppl ≈ base ppl | adapter not applied / wrong checkpoint | confirm `--adapter-path` points at the trained adapter (iter-150) | + +marvy-1-14B is a first-draft assistant. All output must be reviewed by a qualified +ServiceNow consultant before client delivery or production configuration. diff --git a/chat_template.jinja b/chat_template.jinja new file mode 100644 index 0000000..bdf7919 --- /dev/null +++ b/chat_template.jinja @@ -0,0 +1,54 @@ +{%- if tools %} + {{- '<|im_start|>system\n' }} + {%- if messages[0]['role'] == 'system' %} + {{- messages[0]['content'] }} + {%- else %} + {{- 'You are Qwen, created by Alibaba Cloud. You are a helpful assistant.' }} + {%- endif %} + {{- "\n\n# Tools\n\nYou may call one or more functions to assist with the user query.\n\nYou are provided with function signatures within XML tags:\n" }} + {%- for tool in tools %} + {{- "\n" }} + {{- tool | tojson }} + {%- endfor %} + {{- "\n\n\nFor each function call, return a json object with function name and arguments within XML tags:\n\n{\"name\": , \"arguments\": }\n<|im_end|>\n" }} +{%- else %} + {%- if messages[0]['role'] == 'system' %} + {{- '<|im_start|>system\n' + messages[0]['content'] + '<|im_end|>\n' }} + {%- else %} + {{- '<|im_start|>system\nYou are Qwen, created by Alibaba Cloud. You are a helpful assistant.<|im_end|>\n' }} + {%- endif %} +{%- endif %} +{%- for message in messages %} + {%- if (message.role == "user") or (message.role == "system" and not loop.first) or (message.role == "assistant" and not message.tool_calls) %} + {{- '<|im_start|>' + message.role + '\n' + message.content + '<|im_end|>' + '\n' }} + {%- elif message.role == "assistant" %} + {{- '<|im_start|>' + message.role }} + {%- if message.content %} + {{- '\n' + message.content }} + {%- endif %} + {%- for tool_call in message.tool_calls %} + {%- if tool_call.function is defined %} + {%- set tool_call = tool_call.function %} + {%- endif %} + {{- '\n\n{"name": "' }} + {{- tool_call.name }} + {{- '", "arguments": ' }} + {{- tool_call.arguments | tojson }} + {{- '}\n' }} + {%- endfor %} + {{- '<|im_end|>\n' }} + {%- elif message.role == "tool" %} + {%- if (loop.index0 == 0) or (messages[loop.index0 - 1].role != "tool") %} + {{- '<|im_start|>user' }} + {%- endif %} + {{- '\n\n' }} + {{- message.content }} + {{- '\n' }} + {%- if loop.last or (messages[loop.index0 + 1].role != "tool") %} + {{- '<|im_end|>\n' }} + {%- endif %} + {%- endif %} +{%- endfor %} +{%- if add_generation_prompt %} + {{- '<|im_start|>assistant\n' }} +{%- endif %} diff --git a/config.json b/config.json new file mode 100644 index 0000000..c8cc234 --- /dev/null +++ b/config.json @@ -0,0 +1,30 @@ +{ + "architectures": [ + "Qwen2ForCausalLM" + ], + "attention_dropout": 0.0, + "bos_token_id": 151643, + "eos_token_id": [ + 151645, + 151643 + ], + "hidden_act": "silu", + "hidden_size": 5120, + "initializer_range": 0.02, + "intermediate_size": 13824, + "max_position_embeddings": 32768, + "max_window_layers": 70, + "model_type": "qwen2", + "num_attention_heads": 40, + "num_hidden_layers": 48, + "num_key_value_heads": 8, + "rms_norm_eps": 1e-06, + "rope_theta": 1000000.0, + "sliding_window": 131072, + "tie_word_embeddings": false, + "torch_dtype": "bfloat16", + "transformers_version": "4.43.1", + "use_cache": true, + "use_sliding_window": false, + "vocab_size": 152064 +} \ No newline at end of file diff --git a/generation_config.json b/generation_config.json new file mode 100644 index 0000000..bf077f0 --- /dev/null +++ b/generation_config.json @@ -0,0 +1,14 @@ +{ + "bos_token_id": 151643, + "pad_token_id": 151643, + "do_sample": true, + "eos_token_id": [ + 151645, + 151643 + ], + "repetition_penalty": 1.05, + "temperature": 0.7, + "top_p": 0.8, + "top_k": 20, + "transformers_version": "4.37.0" +} \ No newline at end of file diff --git a/marvy_improvement.png b/marvy_improvement.png new file mode 100644 index 0000000..5149f7c Binary files /dev/null and b/marvy_improvement.png differ diff --git a/marvy_vs_base_ppl.png b/marvy_vs_base_ppl.png new file mode 100644 index 0000000..8630d6b --- /dev/null +++ b/marvy_vs_base_ppl.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:64d0eec4d311d5db10138e4c2994269eaff4ada63b51571a6249369654435ca4 +size 104116 diff --git a/model-00001-of-00006.safetensors b/model-00001-of-00006.safetensors new file mode 100644 index 0000000..7430f6c --- /dev/null +++ b/model-00001-of-00006.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c9f4f094712adb9411691fc9b47d2ba6488a426bd92cc9881c7e9a5e6e76cdbc +size 5269326976 diff --git a/model-00002-of-00006.safetensors b/model-00002-of-00006.safetensors new file mode 100644 index 0000000..39d8da9 --- /dev/null +++ b/model-00002-of-00006.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:26d4a35ad7a246ee3469da5d6518eac04afde333c5dcef1d8d5e47dec8467c01 +size 5363828073 diff --git a/model-00003-of-00006.safetensors b/model-00003-of-00006.safetensors new file mode 100644 index 0000000..32c9930 --- /dev/null +++ b/model-00003-of-00006.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bb1f0d357f4173ad7cf5e1b63ccf2c92212733a4f278eee807047ee5b63d457e +size 5363828102 diff --git a/model-00004-of-00006.safetensors b/model-00004-of-00006.safetensors new file mode 100644 index 0000000..006ebe8 --- /dev/null +++ b/model-00004-of-00006.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:944e634f1c825e4706b285f808267e0891d8f918f14073b575fc790d5302f560 +size 5237963142 diff --git a/model-00005-of-00006.safetensors b/model-00005-of-00006.safetensors new file mode 100644 index 0000000..fda5ec3 --- /dev/null +++ b/model-00005-of-00006.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:10a41b64fb4f2b0789260bda84cf7fac69f2241cd3d85418164be365a9626d8c +size 5363828102 diff --git a/model-00006-of-00006.safetensors b/model-00006-of-00006.safetensors new file mode 100644 index 0000000..af0cce7 --- /dev/null +++ b/model-00006-of-00006.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:03e43f4ec3d8d36c1feab31069c77fffdaace3dc5a472369d1f0222dc2033ebb +size 2941359481 diff --git a/model.safetensors.index.json b/model.safetensors.index.json new file mode 100644 index 0000000..4b4875c --- /dev/null +++ b/model.safetensors.index.json @@ -0,0 +1,587 @@ +{ + "metadata": { + "total_size": 29540067328, + "total_parameters": 14770033664 + }, + "weight_map": { + "lm_head.weight": "model-00006-of-00006.safetensors", + "model.embed_tokens.weight": "model-00001-of-00006.safetensors", + "model.layers.0.input_layernorm.weight": "model-00001-of-00006.safetensors", + "model.layers.0.mlp.down_proj.weight": "model-00001-of-00006.safetensors", + "model.layers.0.mlp.gate_proj.weight": "model-00001-of-00006.safetensors", + "model.layers.0.mlp.up_proj.weight": "model-00001-of-00006.safetensors", + "model.layers.0.post_attention_layernorm.weight": "model-00001-of-00006.safetensors", + "model.layers.0.self_attn.k_proj.bias": "model-00001-of-00006.safetensors", + "model.layers.0.self_attn.k_proj.weight": "model-00001-of-00006.safetensors", + "model.layers.0.self_attn.o_proj.weight": "model-00001-of-00006.safetensors", + "model.layers.0.self_attn.q_proj.bias": "model-00001-of-00006.safetensors", + "model.layers.0.self_attn.q_proj.weight": "model-00001-of-00006.safetensors", + "model.layers.0.self_attn.v_proj.bias": "model-00001-of-00006.safetensors", + "model.layers.0.self_attn.v_proj.weight": "model-00001-of-00006.safetensors", + "model.layers.1.input_layernorm.weight": "model-00001-of-00006.safetensors", + "model.layers.1.mlp.down_proj.weight": "model-00001-of-00006.safetensors", + "model.layers.1.mlp.gate_proj.weight": "model-00001-of-00006.safetensors", + "model.layers.1.mlp.up_proj.weight": "model-00001-of-00006.safetensors", + "model.layers.1.post_attention_layernorm.weight": "model-00001-of-00006.safetensors", + "model.layers.1.self_attn.k_proj.bias": "model-00001-of-00006.safetensors", + "model.layers.1.self_attn.k_proj.weight": "model-00001-of-00006.safetensors", + "model.layers.1.self_attn.o_proj.weight": "model-00001-of-00006.safetensors", + "model.layers.1.self_attn.q_proj.bias": "model-00001-of-00006.safetensors", + "model.layers.1.self_attn.q_proj.weight": "model-00001-of-00006.safetensors", + "model.layers.1.self_attn.v_proj.bias": "model-00001-of-00006.safetensors", + "model.layers.1.self_attn.v_proj.weight": "model-00001-of-00006.safetensors", + "model.layers.10.input_layernorm.weight": "model-00002-of-00006.safetensors", + "model.layers.10.mlp.down_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.10.mlp.gate_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.10.mlp.up_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.10.post_attention_layernorm.weight": "model-00002-of-00006.safetensors", + "model.layers.10.self_attn.k_proj.bias": "model-00002-of-00006.safetensors", + "model.layers.10.self_attn.k_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.10.self_attn.o_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.10.self_attn.q_proj.bias": "model-00002-of-00006.safetensors", + "model.layers.10.self_attn.q_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.10.self_attn.v_proj.bias": "model-00002-of-00006.safetensors", + "model.layers.10.self_attn.v_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.11.input_layernorm.weight": "model-00002-of-00006.safetensors", + "model.layers.11.mlp.down_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.11.mlp.gate_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.11.mlp.up_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.11.post_attention_layernorm.weight": "model-00002-of-00006.safetensors", + "model.layers.11.self_attn.k_proj.bias": "model-00002-of-00006.safetensors", + "model.layers.11.self_attn.k_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.11.self_attn.o_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.11.self_attn.q_proj.bias": "model-00002-of-00006.safetensors", + "model.layers.11.self_attn.q_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.11.self_attn.v_proj.bias": "model-00002-of-00006.safetensors", + "model.layers.11.self_attn.v_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.12.input_layernorm.weight": "model-00002-of-00006.safetensors", + "model.layers.12.mlp.down_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.12.mlp.gate_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.12.mlp.up_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.12.post_attention_layernorm.weight": "model-00002-of-00006.safetensors", + "model.layers.12.self_attn.k_proj.bias": "model-00002-of-00006.safetensors", + "model.layers.12.self_attn.k_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.12.self_attn.o_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.12.self_attn.q_proj.bias": "model-00002-of-00006.safetensors", + "model.layers.12.self_attn.q_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.12.self_attn.v_proj.bias": "model-00002-of-00006.safetensors", + "model.layers.12.self_attn.v_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.13.input_layernorm.weight": "model-00002-of-00006.safetensors", + "model.layers.13.mlp.down_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.13.mlp.gate_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.13.mlp.up_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.13.post_attention_layernorm.weight": "model-00002-of-00006.safetensors", + "model.layers.13.self_attn.k_proj.bias": "model-00002-of-00006.safetensors", + "model.layers.13.self_attn.k_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.13.self_attn.o_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.13.self_attn.q_proj.bias": "model-00002-of-00006.safetensors", + "model.layers.13.self_attn.q_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.13.self_attn.v_proj.bias": "model-00002-of-00006.safetensors", + "model.layers.13.self_attn.v_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.14.input_layernorm.weight": "model-00002-of-00006.safetensors", + "model.layers.14.mlp.down_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.14.mlp.gate_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.14.mlp.up_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.14.post_attention_layernorm.weight": "model-00002-of-00006.safetensors", + "model.layers.14.self_attn.k_proj.bias": "model-00002-of-00006.safetensors", + "model.layers.14.self_attn.k_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.14.self_attn.o_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.14.self_attn.q_proj.bias": "model-00002-of-00006.safetensors", + "model.layers.14.self_attn.q_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.14.self_attn.v_proj.bias": "model-00002-of-00006.safetensors", + "model.layers.14.self_attn.v_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.15.input_layernorm.weight": "model-00002-of-00006.safetensors", + "model.layers.15.mlp.down_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.15.mlp.gate_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.15.mlp.up_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.15.post_attention_layernorm.weight": "model-00002-of-00006.safetensors", + "model.layers.15.self_attn.k_proj.bias": "model-00002-of-00006.safetensors", + "model.layers.15.self_attn.k_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.15.self_attn.o_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.15.self_attn.q_proj.bias": "model-00002-of-00006.safetensors", + "model.layers.15.self_attn.q_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.15.self_attn.v_proj.bias": "model-00002-of-00006.safetensors", + "model.layers.15.self_attn.v_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.16.input_layernorm.weight": "model-00003-of-00006.safetensors", + "model.layers.16.mlp.down_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.16.mlp.gate_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.16.mlp.up_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.16.post_attention_layernorm.weight": "model-00003-of-00006.safetensors", + "model.layers.16.self_attn.k_proj.bias": "model-00002-of-00006.safetensors", + "model.layers.16.self_attn.k_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.16.self_attn.o_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.16.self_attn.q_proj.bias": "model-00002-of-00006.safetensors", + "model.layers.16.self_attn.q_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.16.self_attn.v_proj.bias": "model-00002-of-00006.safetensors", + "model.layers.16.self_attn.v_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.17.input_layernorm.weight": "model-00003-of-00006.safetensors", + "model.layers.17.mlp.down_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.17.mlp.gate_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.17.mlp.up_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.17.post_attention_layernorm.weight": "model-00003-of-00006.safetensors", + "model.layers.17.self_attn.k_proj.bias": "model-00003-of-00006.safetensors", + "model.layers.17.self_attn.k_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.17.self_attn.o_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.17.self_attn.q_proj.bias": "model-00003-of-00006.safetensors", + "model.layers.17.self_attn.q_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.17.self_attn.v_proj.bias": "model-00003-of-00006.safetensors", + "model.layers.17.self_attn.v_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.18.input_layernorm.weight": "model-00003-of-00006.safetensors", + "model.layers.18.mlp.down_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.18.mlp.gate_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.18.mlp.up_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.18.post_attention_layernorm.weight": "model-00003-of-00006.safetensors", + "model.layers.18.self_attn.k_proj.bias": "model-00003-of-00006.safetensors", + "model.layers.18.self_attn.k_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.18.self_attn.o_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.18.self_attn.q_proj.bias": "model-00003-of-00006.safetensors", + "model.layers.18.self_attn.q_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.18.self_attn.v_proj.bias": "model-00003-of-00006.safetensors", + "model.layers.18.self_attn.v_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.19.input_layernorm.weight": "model-00003-of-00006.safetensors", + "model.layers.19.mlp.down_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.19.mlp.gate_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.19.mlp.up_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.19.post_attention_layernorm.weight": "model-00003-of-00006.safetensors", + "model.layers.19.self_attn.k_proj.bias": "model-00003-of-00006.safetensors", + "model.layers.19.self_attn.k_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.19.self_attn.o_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.19.self_attn.q_proj.bias": "model-00003-of-00006.safetensors", + "model.layers.19.self_attn.q_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.19.self_attn.v_proj.bias": "model-00003-of-00006.safetensors", + "model.layers.19.self_attn.v_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.2.input_layernorm.weight": "model-00001-of-00006.safetensors", + "model.layers.2.mlp.down_proj.weight": "model-00001-of-00006.safetensors", + "model.layers.2.mlp.gate_proj.weight": "model-00001-of-00006.safetensors", + "model.layers.2.mlp.up_proj.weight": "model-00001-of-00006.safetensors", + "model.layers.2.post_attention_layernorm.weight": "model-00001-of-00006.safetensors", + "model.layers.2.self_attn.k_proj.bias": "model-00001-of-00006.safetensors", + "model.layers.2.self_attn.k_proj.weight": "model-00001-of-00006.safetensors", + "model.layers.2.self_attn.o_proj.weight": "model-00001-of-00006.safetensors", + "model.layers.2.self_attn.q_proj.bias": "model-00001-of-00006.safetensors", + "model.layers.2.self_attn.q_proj.weight": "model-00001-of-00006.safetensors", + "model.layers.2.self_attn.v_proj.bias": "model-00001-of-00006.safetensors", + "model.layers.2.self_attn.v_proj.weight": "model-00001-of-00006.safetensors", + "model.layers.20.input_layernorm.weight": "model-00003-of-00006.safetensors", + "model.layers.20.mlp.down_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.20.mlp.gate_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.20.mlp.up_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.20.post_attention_layernorm.weight": "model-00003-of-00006.safetensors", + "model.layers.20.self_attn.k_proj.bias": "model-00003-of-00006.safetensors", + "model.layers.20.self_attn.k_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.20.self_attn.o_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.20.self_attn.q_proj.bias": "model-00003-of-00006.safetensors", + "model.layers.20.self_attn.q_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.20.self_attn.v_proj.bias": "model-00003-of-00006.safetensors", + "model.layers.20.self_attn.v_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.21.input_layernorm.weight": "model-00003-of-00006.safetensors", + "model.layers.21.mlp.down_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.21.mlp.gate_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.21.mlp.up_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.21.post_attention_layernorm.weight": "model-00003-of-00006.safetensors", + "model.layers.21.self_attn.k_proj.bias": "model-00003-of-00006.safetensors", + "model.layers.21.self_attn.k_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.21.self_attn.o_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.21.self_attn.q_proj.bias": "model-00003-of-00006.safetensors", + "model.layers.21.self_attn.q_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.21.self_attn.v_proj.bias": "model-00003-of-00006.safetensors", + "model.layers.21.self_attn.v_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.22.input_layernorm.weight": "model-00003-of-00006.safetensors", + "model.layers.22.mlp.down_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.22.mlp.gate_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.22.mlp.up_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.22.post_attention_layernorm.weight": "model-00003-of-00006.safetensors", + "model.layers.22.self_attn.k_proj.bias": "model-00003-of-00006.safetensors", + "model.layers.22.self_attn.k_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.22.self_attn.o_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.22.self_attn.q_proj.bias": "model-00003-of-00006.safetensors", + "model.layers.22.self_attn.q_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.22.self_attn.v_proj.bias": "model-00003-of-00006.safetensors", + "model.layers.22.self_attn.v_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.23.input_layernorm.weight": "model-00003-of-00006.safetensors", + "model.layers.23.mlp.down_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.23.mlp.gate_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.23.mlp.up_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.23.post_attention_layernorm.weight": "model-00003-of-00006.safetensors", + "model.layers.23.self_attn.k_proj.bias": "model-00003-of-00006.safetensors", + "model.layers.23.self_attn.k_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.23.self_attn.o_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.23.self_attn.q_proj.bias": "model-00003-of-00006.safetensors", + "model.layers.23.self_attn.q_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.23.self_attn.v_proj.bias": "model-00003-of-00006.safetensors", + "model.layers.23.self_attn.v_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.24.input_layernorm.weight": "model-00003-of-00006.safetensors", + "model.layers.24.mlp.down_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.24.mlp.gate_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.24.mlp.up_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.24.post_attention_layernorm.weight": "model-00003-of-00006.safetensors", + "model.layers.24.self_attn.k_proj.bias": "model-00003-of-00006.safetensors", + "model.layers.24.self_attn.k_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.24.self_attn.o_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.24.self_attn.q_proj.bias": "model-00003-of-00006.safetensors", + "model.layers.24.self_attn.q_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.24.self_attn.v_proj.bias": "model-00003-of-00006.safetensors", + "model.layers.24.self_attn.v_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.25.input_layernorm.weight": "model-00003-of-00006.safetensors", + "model.layers.25.mlp.down_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.25.mlp.gate_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.25.mlp.up_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.25.post_attention_layernorm.weight": "model-00003-of-00006.safetensors", + "model.layers.25.self_attn.k_proj.bias": "model-00003-of-00006.safetensors", + "model.layers.25.self_attn.k_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.25.self_attn.o_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.25.self_attn.q_proj.bias": "model-00003-of-00006.safetensors", + "model.layers.25.self_attn.q_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.25.self_attn.v_proj.bias": "model-00003-of-00006.safetensors", + "model.layers.25.self_attn.v_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.26.input_layernorm.weight": "model-00004-of-00006.safetensors", + "model.layers.26.mlp.down_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.26.mlp.gate_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.26.mlp.up_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.26.post_attention_layernorm.weight": "model-00004-of-00006.safetensors", + "model.layers.26.self_attn.k_proj.bias": "model-00003-of-00006.safetensors", + "model.layers.26.self_attn.k_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.26.self_attn.o_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.26.self_attn.q_proj.bias": "model-00003-of-00006.safetensors", + "model.layers.26.self_attn.q_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.26.self_attn.v_proj.bias": "model-00003-of-00006.safetensors", + "model.layers.26.self_attn.v_proj.weight": "model-00003-of-00006.safetensors", + "model.layers.27.input_layernorm.weight": "model-00004-of-00006.safetensors", + "model.layers.27.mlp.down_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.27.mlp.gate_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.27.mlp.up_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.27.post_attention_layernorm.weight": "model-00004-of-00006.safetensors", + "model.layers.27.self_attn.k_proj.bias": "model-00004-of-00006.safetensors", + "model.layers.27.self_attn.k_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.27.self_attn.o_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.27.self_attn.q_proj.bias": "model-00004-of-00006.safetensors", + "model.layers.27.self_attn.q_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.27.self_attn.v_proj.bias": "model-00004-of-00006.safetensors", + "model.layers.27.self_attn.v_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.28.input_layernorm.weight": "model-00004-of-00006.safetensors", + "model.layers.28.mlp.down_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.28.mlp.gate_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.28.mlp.up_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.28.post_attention_layernorm.weight": "model-00004-of-00006.safetensors", + "model.layers.28.self_attn.k_proj.bias": "model-00004-of-00006.safetensors", + "model.layers.28.self_attn.k_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.28.self_attn.o_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.28.self_attn.q_proj.bias": "model-00004-of-00006.safetensors", + "model.layers.28.self_attn.q_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.28.self_attn.v_proj.bias": "model-00004-of-00006.safetensors", + "model.layers.28.self_attn.v_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.29.input_layernorm.weight": "model-00004-of-00006.safetensors", + "model.layers.29.mlp.down_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.29.mlp.gate_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.29.mlp.up_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.29.post_attention_layernorm.weight": "model-00004-of-00006.safetensors", + "model.layers.29.self_attn.k_proj.bias": "model-00004-of-00006.safetensors", + "model.layers.29.self_attn.k_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.29.self_attn.o_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.29.self_attn.q_proj.bias": "model-00004-of-00006.safetensors", + "model.layers.29.self_attn.q_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.29.self_attn.v_proj.bias": "model-00004-of-00006.safetensors", + "model.layers.29.self_attn.v_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.3.input_layernorm.weight": "model-00001-of-00006.safetensors", + "model.layers.3.mlp.down_proj.weight": "model-00001-of-00006.safetensors", + "model.layers.3.mlp.gate_proj.weight": "model-00001-of-00006.safetensors", + "model.layers.3.mlp.up_proj.weight": "model-00001-of-00006.safetensors", + "model.layers.3.post_attention_layernorm.weight": "model-00001-of-00006.safetensors", + "model.layers.3.self_attn.k_proj.bias": "model-00001-of-00006.safetensors", + "model.layers.3.self_attn.k_proj.weight": "model-00001-of-00006.safetensors", + "model.layers.3.self_attn.o_proj.weight": "model-00001-of-00006.safetensors", + "model.layers.3.self_attn.q_proj.bias": "model-00001-of-00006.safetensors", + "model.layers.3.self_attn.q_proj.weight": "model-00001-of-00006.safetensors", + "model.layers.3.self_attn.v_proj.bias": "model-00001-of-00006.safetensors", + "model.layers.3.self_attn.v_proj.weight": "model-00001-of-00006.safetensors", + "model.layers.30.input_layernorm.weight": "model-00004-of-00006.safetensors", + "model.layers.30.mlp.down_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.30.mlp.gate_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.30.mlp.up_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.30.post_attention_layernorm.weight": "model-00004-of-00006.safetensors", + "model.layers.30.self_attn.k_proj.bias": "model-00004-of-00006.safetensors", + "model.layers.30.self_attn.k_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.30.self_attn.o_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.30.self_attn.q_proj.bias": "model-00004-of-00006.safetensors", + "model.layers.30.self_attn.q_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.30.self_attn.v_proj.bias": "model-00004-of-00006.safetensors", + "model.layers.30.self_attn.v_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.31.input_layernorm.weight": "model-00004-of-00006.safetensors", + "model.layers.31.mlp.down_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.31.mlp.gate_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.31.mlp.up_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.31.post_attention_layernorm.weight": "model-00004-of-00006.safetensors", + "model.layers.31.self_attn.k_proj.bias": "model-00004-of-00006.safetensors", + "model.layers.31.self_attn.k_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.31.self_attn.o_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.31.self_attn.q_proj.bias": "model-00004-of-00006.safetensors", + "model.layers.31.self_attn.q_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.31.self_attn.v_proj.bias": "model-00004-of-00006.safetensors", + "model.layers.31.self_attn.v_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.32.input_layernorm.weight": "model-00004-of-00006.safetensors", + "model.layers.32.mlp.down_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.32.mlp.gate_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.32.mlp.up_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.32.post_attention_layernorm.weight": "model-00004-of-00006.safetensors", + "model.layers.32.self_attn.k_proj.bias": "model-00004-of-00006.safetensors", + "model.layers.32.self_attn.k_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.32.self_attn.o_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.32.self_attn.q_proj.bias": "model-00004-of-00006.safetensors", + "model.layers.32.self_attn.q_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.32.self_attn.v_proj.bias": "model-00004-of-00006.safetensors", + "model.layers.32.self_attn.v_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.33.input_layernorm.weight": "model-00004-of-00006.safetensors", + "model.layers.33.mlp.down_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.33.mlp.gate_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.33.mlp.up_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.33.post_attention_layernorm.weight": "model-00004-of-00006.safetensors", + "model.layers.33.self_attn.k_proj.bias": "model-00004-of-00006.safetensors", + "model.layers.33.self_attn.k_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.33.self_attn.o_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.33.self_attn.q_proj.bias": "model-00004-of-00006.safetensors", + "model.layers.33.self_attn.q_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.33.self_attn.v_proj.bias": "model-00004-of-00006.safetensors", + "model.layers.33.self_attn.v_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.34.input_layernorm.weight": "model-00004-of-00006.safetensors", + "model.layers.34.mlp.down_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.34.mlp.gate_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.34.mlp.up_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.34.post_attention_layernorm.weight": "model-00004-of-00006.safetensors", + "model.layers.34.self_attn.k_proj.bias": "model-00004-of-00006.safetensors", + "model.layers.34.self_attn.k_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.34.self_attn.o_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.34.self_attn.q_proj.bias": "model-00004-of-00006.safetensors", + "model.layers.34.self_attn.q_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.34.self_attn.v_proj.bias": "model-00004-of-00006.safetensors", + "model.layers.34.self_attn.v_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.35.input_layernorm.weight": "model-00005-of-00006.safetensors", + "model.layers.35.mlp.down_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.35.mlp.gate_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.35.mlp.up_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.35.post_attention_layernorm.weight": "model-00005-of-00006.safetensors", + "model.layers.35.self_attn.k_proj.bias": "model-00004-of-00006.safetensors", + "model.layers.35.self_attn.k_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.35.self_attn.o_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.35.self_attn.q_proj.bias": "model-00004-of-00006.safetensors", + "model.layers.35.self_attn.q_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.35.self_attn.v_proj.bias": "model-00004-of-00006.safetensors", + "model.layers.35.self_attn.v_proj.weight": "model-00004-of-00006.safetensors", + "model.layers.36.input_layernorm.weight": "model-00005-of-00006.safetensors", + "model.layers.36.mlp.down_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.36.mlp.gate_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.36.mlp.up_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.36.post_attention_layernorm.weight": "model-00005-of-00006.safetensors", + "model.layers.36.self_attn.k_proj.bias": "model-00005-of-00006.safetensors", + "model.layers.36.self_attn.k_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.36.self_attn.o_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.36.self_attn.q_proj.bias": "model-00005-of-00006.safetensors", + "model.layers.36.self_attn.q_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.36.self_attn.v_proj.bias": "model-00005-of-00006.safetensors", + "model.layers.36.self_attn.v_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.37.input_layernorm.weight": "model-00005-of-00006.safetensors", + "model.layers.37.mlp.down_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.37.mlp.gate_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.37.mlp.up_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.37.post_attention_layernorm.weight": "model-00005-of-00006.safetensors", + "model.layers.37.self_attn.k_proj.bias": "model-00005-of-00006.safetensors", + "model.layers.37.self_attn.k_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.37.self_attn.o_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.37.self_attn.q_proj.bias": "model-00005-of-00006.safetensors", + "model.layers.37.self_attn.q_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.37.self_attn.v_proj.bias": "model-00005-of-00006.safetensors", + "model.layers.37.self_attn.v_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.38.input_layernorm.weight": "model-00005-of-00006.safetensors", + "model.layers.38.mlp.down_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.38.mlp.gate_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.38.mlp.up_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.38.post_attention_layernorm.weight": "model-00005-of-00006.safetensors", + "model.layers.38.self_attn.k_proj.bias": "model-00005-of-00006.safetensors", + "model.layers.38.self_attn.k_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.38.self_attn.o_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.38.self_attn.q_proj.bias": "model-00005-of-00006.safetensors", + "model.layers.38.self_attn.q_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.38.self_attn.v_proj.bias": "model-00005-of-00006.safetensors", + "model.layers.38.self_attn.v_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.39.input_layernorm.weight": "model-00005-of-00006.safetensors", + "model.layers.39.mlp.down_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.39.mlp.gate_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.39.mlp.up_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.39.post_attention_layernorm.weight": "model-00005-of-00006.safetensors", + "model.layers.39.self_attn.k_proj.bias": "model-00005-of-00006.safetensors", + "model.layers.39.self_attn.k_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.39.self_attn.o_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.39.self_attn.q_proj.bias": "model-00005-of-00006.safetensors", + "model.layers.39.self_attn.q_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.39.self_attn.v_proj.bias": "model-00005-of-00006.safetensors", + "model.layers.39.self_attn.v_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.4.input_layernorm.weight": "model-00001-of-00006.safetensors", + "model.layers.4.mlp.down_proj.weight": "model-00001-of-00006.safetensors", + "model.layers.4.mlp.gate_proj.weight": "model-00001-of-00006.safetensors", + "model.layers.4.mlp.up_proj.weight": "model-00001-of-00006.safetensors", + "model.layers.4.post_attention_layernorm.weight": "model-00001-of-00006.safetensors", + "model.layers.4.self_attn.k_proj.bias": "model-00001-of-00006.safetensors", + "model.layers.4.self_attn.k_proj.weight": "model-00001-of-00006.safetensors", + "model.layers.4.self_attn.o_proj.weight": "model-00001-of-00006.safetensors", + "model.layers.4.self_attn.q_proj.bias": "model-00001-of-00006.safetensors", + "model.layers.4.self_attn.q_proj.weight": "model-00001-of-00006.safetensors", + "model.layers.4.self_attn.v_proj.bias": "model-00001-of-00006.safetensors", + "model.layers.4.self_attn.v_proj.weight": "model-00001-of-00006.safetensors", + "model.layers.40.input_layernorm.weight": "model-00005-of-00006.safetensors", + "model.layers.40.mlp.down_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.40.mlp.gate_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.40.mlp.up_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.40.post_attention_layernorm.weight": "model-00005-of-00006.safetensors", + "model.layers.40.self_attn.k_proj.bias": "model-00005-of-00006.safetensors", + "model.layers.40.self_attn.k_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.40.self_attn.o_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.40.self_attn.q_proj.bias": "model-00005-of-00006.safetensors", + "model.layers.40.self_attn.q_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.40.self_attn.v_proj.bias": "model-00005-of-00006.safetensors", + "model.layers.40.self_attn.v_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.41.input_layernorm.weight": "model-00005-of-00006.safetensors", + "model.layers.41.mlp.down_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.41.mlp.gate_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.41.mlp.up_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.41.post_attention_layernorm.weight": "model-00005-of-00006.safetensors", + "model.layers.41.self_attn.k_proj.bias": "model-00005-of-00006.safetensors", + "model.layers.41.self_attn.k_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.41.self_attn.o_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.41.self_attn.q_proj.bias": "model-00005-of-00006.safetensors", + "model.layers.41.self_attn.q_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.41.self_attn.v_proj.bias": "model-00005-of-00006.safetensors", + "model.layers.41.self_attn.v_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.42.input_layernorm.weight": "model-00005-of-00006.safetensors", + "model.layers.42.mlp.down_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.42.mlp.gate_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.42.mlp.up_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.42.post_attention_layernorm.weight": "model-00005-of-00006.safetensors", + "model.layers.42.self_attn.k_proj.bias": "model-00005-of-00006.safetensors", + "model.layers.42.self_attn.k_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.42.self_attn.o_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.42.self_attn.q_proj.bias": "model-00005-of-00006.safetensors", + "model.layers.42.self_attn.q_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.42.self_attn.v_proj.bias": "model-00005-of-00006.safetensors", + "model.layers.42.self_attn.v_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.43.input_layernorm.weight": "model-00005-of-00006.safetensors", + "model.layers.43.mlp.down_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.43.mlp.gate_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.43.mlp.up_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.43.post_attention_layernorm.weight": "model-00005-of-00006.safetensors", + "model.layers.43.self_attn.k_proj.bias": "model-00005-of-00006.safetensors", + "model.layers.43.self_attn.k_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.43.self_attn.o_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.43.self_attn.q_proj.bias": "model-00005-of-00006.safetensors", + "model.layers.43.self_attn.q_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.43.self_attn.v_proj.bias": "model-00005-of-00006.safetensors", + "model.layers.43.self_attn.v_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.44.input_layernorm.weight": "model-00005-of-00006.safetensors", + "model.layers.44.mlp.down_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.44.mlp.gate_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.44.mlp.up_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.44.post_attention_layernorm.weight": "model-00005-of-00006.safetensors", + "model.layers.44.self_attn.k_proj.bias": "model-00005-of-00006.safetensors", + "model.layers.44.self_attn.k_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.44.self_attn.o_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.44.self_attn.q_proj.bias": "model-00005-of-00006.safetensors", + "model.layers.44.self_attn.q_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.44.self_attn.v_proj.bias": "model-00005-of-00006.safetensors", + "model.layers.44.self_attn.v_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.45.input_layernorm.weight": "model-00006-of-00006.safetensors", + "model.layers.45.mlp.down_proj.weight": "model-00006-of-00006.safetensors", + "model.layers.45.mlp.gate_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.45.mlp.up_proj.weight": "model-00006-of-00006.safetensors", + "model.layers.45.post_attention_layernorm.weight": "model-00006-of-00006.safetensors", + "model.layers.45.self_attn.k_proj.bias": "model-00005-of-00006.safetensors", + "model.layers.45.self_attn.k_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.45.self_attn.o_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.45.self_attn.q_proj.bias": "model-00005-of-00006.safetensors", + "model.layers.45.self_attn.q_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.45.self_attn.v_proj.bias": "model-00005-of-00006.safetensors", + "model.layers.45.self_attn.v_proj.weight": "model-00005-of-00006.safetensors", + "model.layers.46.input_layernorm.weight": "model-00006-of-00006.safetensors", + "model.layers.46.mlp.down_proj.weight": "model-00006-of-00006.safetensors", + "model.layers.46.mlp.gate_proj.weight": "model-00006-of-00006.safetensors", + "model.layers.46.mlp.up_proj.weight": "model-00006-of-00006.safetensors", + "model.layers.46.post_attention_layernorm.weight": "model-00006-of-00006.safetensors", + "model.layers.46.self_attn.k_proj.bias": "model-00006-of-00006.safetensors", + "model.layers.46.self_attn.k_proj.weight": "model-00006-of-00006.safetensors", + "model.layers.46.self_attn.o_proj.weight": "model-00006-of-00006.safetensors", + "model.layers.46.self_attn.q_proj.bias": "model-00006-of-00006.safetensors", + "model.layers.46.self_attn.q_proj.weight": "model-00006-of-00006.safetensors", + "model.layers.46.self_attn.v_proj.bias": "model-00006-of-00006.safetensors", + "model.layers.46.self_attn.v_proj.weight": "model-00006-of-00006.safetensors", + "model.layers.47.input_layernorm.weight": "model-00006-of-00006.safetensors", + "model.layers.47.mlp.down_proj.weight": "model-00006-of-00006.safetensors", + "model.layers.47.mlp.gate_proj.weight": "model-00006-of-00006.safetensors", + "model.layers.47.mlp.up_proj.weight": "model-00006-of-00006.safetensors", + "model.layers.47.post_attention_layernorm.weight": "model-00006-of-00006.safetensors", + "model.layers.47.self_attn.k_proj.bias": "model-00006-of-00006.safetensors", + "model.layers.47.self_attn.k_proj.weight": "model-00006-of-00006.safetensors", + "model.layers.47.self_attn.o_proj.weight": "model-00006-of-00006.safetensors", + "model.layers.47.self_attn.q_proj.bias": "model-00006-of-00006.safetensors", + "model.layers.47.self_attn.q_proj.weight": "model-00006-of-00006.safetensors", + "model.layers.47.self_attn.v_proj.bias": "model-00006-of-00006.safetensors", + "model.layers.47.self_attn.v_proj.weight": "model-00006-of-00006.safetensors", + "model.layers.5.input_layernorm.weight": "model-00001-of-00006.safetensors", + "model.layers.5.mlp.down_proj.weight": "model-00001-of-00006.safetensors", + "model.layers.5.mlp.gate_proj.weight": "model-00001-of-00006.safetensors", + "model.layers.5.mlp.up_proj.weight": "model-00001-of-00006.safetensors", + "model.layers.5.post_attention_layernorm.weight": "model-00001-of-00006.safetensors", + "model.layers.5.self_attn.k_proj.bias": "model-00001-of-00006.safetensors", + "model.layers.5.self_attn.k_proj.weight": "model-00001-of-00006.safetensors", + "model.layers.5.self_attn.o_proj.weight": "model-00001-of-00006.safetensors", + "model.layers.5.self_attn.q_proj.bias": "model-00001-of-00006.safetensors", + "model.layers.5.self_attn.q_proj.weight": "model-00001-of-00006.safetensors", + "model.layers.5.self_attn.v_proj.bias": "model-00001-of-00006.safetensors", + "model.layers.5.self_attn.v_proj.weight": "model-00001-of-00006.safetensors", + "model.layers.6.input_layernorm.weight": "model-00002-of-00006.safetensors", + "model.layers.6.mlp.down_proj.weight": "model-00001-of-00006.safetensors", + "model.layers.6.mlp.gate_proj.weight": "model-00001-of-00006.safetensors", + "model.layers.6.mlp.up_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.6.post_attention_layernorm.weight": "model-00002-of-00006.safetensors", + "model.layers.6.self_attn.k_proj.bias": "model-00001-of-00006.safetensors", + "model.layers.6.self_attn.k_proj.weight": "model-00001-of-00006.safetensors", + "model.layers.6.self_attn.o_proj.weight": "model-00001-of-00006.safetensors", + "model.layers.6.self_attn.q_proj.bias": "model-00001-of-00006.safetensors", + "model.layers.6.self_attn.q_proj.weight": "model-00001-of-00006.safetensors", + "model.layers.6.self_attn.v_proj.bias": "model-00001-of-00006.safetensors", + "model.layers.6.self_attn.v_proj.weight": "model-00001-of-00006.safetensors", + "model.layers.7.input_layernorm.weight": "model-00002-of-00006.safetensors", + "model.layers.7.mlp.down_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.7.mlp.gate_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.7.mlp.up_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.7.post_attention_layernorm.weight": "model-00002-of-00006.safetensors", + "model.layers.7.self_attn.k_proj.bias": "model-00002-of-00006.safetensors", + "model.layers.7.self_attn.k_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.7.self_attn.o_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.7.self_attn.q_proj.bias": "model-00002-of-00006.safetensors", + "model.layers.7.self_attn.q_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.7.self_attn.v_proj.bias": "model-00002-of-00006.safetensors", + "model.layers.7.self_attn.v_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.8.input_layernorm.weight": "model-00002-of-00006.safetensors", + "model.layers.8.mlp.down_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.8.mlp.gate_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.8.mlp.up_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.8.post_attention_layernorm.weight": "model-00002-of-00006.safetensors", + "model.layers.8.self_attn.k_proj.bias": "model-00002-of-00006.safetensors", + "model.layers.8.self_attn.k_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.8.self_attn.o_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.8.self_attn.q_proj.bias": "model-00002-of-00006.safetensors", + "model.layers.8.self_attn.q_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.8.self_attn.v_proj.bias": "model-00002-of-00006.safetensors", + "model.layers.8.self_attn.v_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.9.input_layernorm.weight": "model-00002-of-00006.safetensors", + "model.layers.9.mlp.down_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.9.mlp.gate_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.9.mlp.up_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.9.post_attention_layernorm.weight": "model-00002-of-00006.safetensors", + "model.layers.9.self_attn.k_proj.bias": "model-00002-of-00006.safetensors", + "model.layers.9.self_attn.k_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.9.self_attn.o_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.9.self_attn.q_proj.bias": "model-00002-of-00006.safetensors", + "model.layers.9.self_attn.q_proj.weight": "model-00002-of-00006.safetensors", + "model.layers.9.self_attn.v_proj.bias": "model-00002-of-00006.safetensors", + "model.layers.9.self_attn.v_proj.weight": "model-00002-of-00006.safetensors", + "model.norm.weight": "model-00006-of-00006.safetensors" + } +} \ No newline at end of file diff --git a/tokenizer.json b/tokenizer.json new file mode 100644 index 0000000..34510ff --- /dev/null +++ b/tokenizer.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3fd169731d2cbde95e10bf356d66d5997fd885dd8dbb6fb4684da3f23b2585d8 +size 11421892 diff --git a/tokenizer_config.json b/tokenizer_config.json new file mode 100644 index 0000000..0cf1c38 --- /dev/null +++ b/tokenizer_config.json @@ -0,0 +1,31 @@ +{ + "add_prefix_space": false, + "backend": "tokenizers", + "bos_token": null, + "clean_up_tokenization_spaces": false, + "eos_token": "<|im_end|>", + "errors": "replace", + "extra_special_tokens": [ + "<|im_start|>", + "<|im_end|>", + "<|object_ref_start|>", + "<|object_ref_end|>", + "<|box_start|>", + "<|box_end|>", + "<|quad_start|>", + "<|quad_end|>", + "<|vision_start|>", + "<|vision_end|>", + "<|vision_pad|>", + "<|image_pad|>", + "<|video_pad|>" + ], + "is_local": true, + "local_files_only": false, + "model_max_length": 131072, + "pad_token": "<|endoftext|>", + "split_special_tokens": false, + "tokenizer_class": "Qwen2Tokenizer", + "tool_parser_type": "json_tools", + "unk_token": null +} diff --git a/validate.sh b/validate.sh new file mode 100644 index 0000000..e31a4d7 --- /dev/null +++ b/validate.sh @@ -0,0 +1,61 @@ +#!/usr/bin/env bash +# marvy-14B quick validation harness. +# +# Runs the task-coverage probes (Test 2 in VALIDATION.md) against any +# OpenAI-compatible endpoint — LM Studio, mlx_lm server, vLLM, etc. — and prints +# each artifact plus a lightweight heuristic PASS/FAIL on domain keywords. +# +# Usage: +# bash validate.sh # defaults to LM Studio +# BASE_URL=http://localhost:8080/v1 MODEL=marvy-14B bash validate.sh +# API_KEY=xxx BASE_URL=https://... MODEL=MainStack/marvy-14B bash validate.sh +set -uo pipefail + +BASE_URL="${BASE_URL:-http://localhost:1234/v1}" # LM Studio default +MODEL="${MODEL:-marvy-14B}" +API_KEY="${API_KEY:-lm-studio}" +TEMP="${TEMP:-0.4}" +MAXTOK="${MAXTOK:-700}" + +SYSTEM="You are a senior ServiceNow delivery consultant. You produce precise, implementation-grade artifacts: business analyses, requirements, solution design documents, user stories with acceptance criteria, test cases, and validation reviews. You favor out-of-the-box capabilities, cite concrete tables/plugins/sys_ids when relevant, and write in clear professional English." + +# probe | expected-keyword-regex (case-insensitive) for a heuristic pass +PROMPTS=( + "Write a user story with acceptance criteria for auto-escalating P1 incidents that breach a 15-minute response SLA.|as a.*i want.*so that|acceptance|sla" + "Draft the Incident Management section of an SDD for a greenfield ITSM implementation. Include assignment rules and SLA design.|assignment|sla|incident" + "Extract structured requirements (id, category, priority, target phase, success metric) from: replace email-based access requests with a catalog item routed for manager approval.|priority|requirement|catalog" + "Write a test case for the story: Restrict the Assignment Group field on incidents to groups with the itil role.|pre-condition|step|expected|itil" + "Validate this requirement against best practice and list follow-up questions: All incidents must auto-close after 3 days.|follow-up|risk|question" +) + +command -v jq >/dev/null 2>&1 || { echo "ERROR: jq is required (brew install jq)"; exit 1; } + +echo "Endpoint: $BASE_URL Model: $MODEL Temp: $TEMP" +echo "============================================================" +pass=0; total=0 +for entry in "${PROMPTS[@]}"; do + total=$((total+1)) + prompt="${entry%%|*}" + rest="${entry#*|}"; regex="$rest" + payload=$(jq -n --arg m "$MODEL" --arg s "$SYSTEM" --arg p "$prompt" \ + --argjson t "$TEMP" --argjson mx "$MAXTOK" \ + '{model:$m,temperature:$t,max_tokens:$mx,messages:[{role:"system",content:$s},{role:"user",content:$p}]}') + resp=$(curl -s "$BASE_URL/chat/completions" -H "Content-Type: application/json" \ + -H "Authorization: Bearer $API_KEY" -d "$payload") + content=$(echo "$resp" | jq -r '.choices[0].message.content // .error.message // "<>"') + echo "" + echo "### Probe $total: $prompt" + echo "------------------------------------------------------------" + echo "$content" | head -40 + if echo "$content" | grep -iqE "$regex"; then + echo ">>> heuristic: PASS" + pass=$((pass+1)) + else + echo ">>> heuristic: REVIEW (expected pattern not matched: $regex)" + fi + echo "============================================================" +done +echo "" +echo "Heuristic result: $pass/$total probes matched domain patterns." +echo "Pass threshold: >= 4/5 with implementation-grade, ServiceNow-specific content." +echo "Note: heuristics are a sanity check — read the outputs to judge true quality."