File size: 6,178 Bytes
367a722
7585b58
 
 
367a722
7585b58
 
 
 
 
367a722
7585b58
 
 
 
 
 
 
b73ff82
eac5a32
b73ff82
 
 
24825f9
7585b58
e8462c3
7585b58
 
 
 
 
 
 
 
 
add35f5
7585b58
24825f9
7585b58
 
 
 
 
eac5a32
7585b58
 
eac5a32
7585b58
 
eac5a32
7585b58
 
 
 
ecb359f
7585b58
 
 
 
 
c731072
7585b58
 
 
cde16c9
 
ecb359f
cde16c9
ecb359f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
---
base_model: Maykeye/TinyLLama-v0
language:
- en
license: apache-2.0
tags:
- llamafile
- model-conversion
- text-generation
- gguf
---

# TinyLLama-v0 - llamafile
- Model creator: [Maykeye](https://huggingface.co/Maykeye)
- Original model: [TinyLLama-v0](https://huggingface.co/Maykeye/TinyLLama-v0)

## Description

* This repo is targeted towards:
  - People who just want to quickly try out the llamafile technology by running `./Tinyllama-5M-v0.2-F16.llamafile --cli -p "hello world"` as this llamafile is only 17.6 MB in size!
  - Developers who would like a quick demo on the steps to convert an existing model from safe tensor format to a gguf and packaged into a llamafile for easy distribution (Just run `llamafile-creation.sh` to retrace the steps).
  - Researchers who are just curious about the state of AI technology in terms of shrinking AI models, as the original model was from a replication attempt of a research paper.

This repo contains [llamafile](https://github.com/Mozilla-Ocho/llamafile) format model files for [Maykeye/TinyLLama-v0](https://huggingface.co/Maykeye/TinyLLama-v0) that is a recreation of [roneneldan/TinyStories-1M](https://huggingface.co/roneneldan/TinyStories-1M) which was part of this very interesting research paper called [TinyStories: How Small Can Language Models Be and Still Speak Coherent English?](https://arxiv.org/abs/2305.07759) by Ronen Eldan and Yuanzhi Li.

In the paper this is their abstract

> Language models (LMs) are powerful tools for natural language processing, but they often struggle to produce coherent and fluent text when they are small. Models with around 125M parameters such as GPT-Neo (small) or GPT-2 (small) can rarely generate coherent and consistent English text beyond a few words even after extensive training. This raises the question of whether the emergence of the ability to produce coherent English text only occurs at larger scales (with hundreds of millions of parameters or more) and complex architectures (with many layers of global attention).

> In this work, we introduce TinyStories, a synthetic dataset of short stories that only contain words that a typical 3 to 4-year-olds usually understand, generated by GPT-3.5 and GPT-4. We show that TinyStories can be used to train and evaluate LMs that are much smaller than the state-of-the-art models (below 10 million total parameters), or have much simpler architectures (with only one transformer block), yet still produce fluent and consistent stories with several paragraphs that are diverse and have almost perfect grammar, and demonstrate reasoning capabilities.

> We also introduce a new paradigm for the evaluation of language models: We suggest a framework which uses GPT-4 to grade the content generated by these models as if those were stories written by students and graded by a (human) teacher. This new paradigm overcomes the flaws of standard benchmarks which often requires the model's output to be very structures, and moreover provides a multidimensional score for the model, providing scores for different capabilities such as grammar, creativity and consistency.

> We hope that TinyStories can facilitate the development, analysis and research of LMs, especially for low-resource or specialized domains, and shed light on the emergence of language capabilities in LMs. 

While Maykeye's replication effort didn't reduce the model down to 1M parameters, Maykeye did get down to 5M parameters which is still quite an achievement as far as known replication efforts have shown.

Anyway, this conversion to [llamafile](https://github.com/Mozilla-Ocho/llamafile) should give you an easy way to give this model a shot and also of the whole [llamafile](https://github.com/Mozilla-Ocho/llamafile) ecosystem in general (as it's quite quite small compared to other larger chat capable models). As this is primarily a text generation model, it will open a web server as part of the [llamafile](https://github.com/Mozilla-Ocho/llamafile) process, but it will not engage in chat as one might expect.. Instead you would give it a story prompt and it will generate a story for you. Don't expect any great stories for this size however, but it's an interesting demo on how small you can squeeze AI models and still have it generate recognisable english.

## Usage In Linux

```bash
# if not already usable 
chmod +x Tinyllama-5M-v0.2-F16.llamafile

# To start the llamafile in web sever mode just call this directly
./Tinyllama-5M-v0.2-F16.llamafile

# To start the llamafile in command line use this command
./Tinyllama-5M-v0.2-F16.llamafile --cli -p "A dog and a cat"
```

## About llamafile

[llamafile](https://github.com/Mozilla-Ocho/llamafile) is a new format introduced by Mozilla Ocho on Nov 20th 2023. It uses [Cosmopolitan Libc](https://github.com/jart/cosmopolitan) to turn LLM weights into runnable [llama.cpp](https://github.com/ggerganov/llama.cpp) binaries that run on the stock installs of six OSes for both ARM64 and AMD64.

## Replication Steps Assumption

* You have already pulled in all the submodules including Maykeye's model in safe.tensor format
* Your git has LFS configured correctly or you get this issue https://github.com/ggerganov/llama.cpp/issues/1994 where `safe.tensor` doesn't download properly (and only a small pointer file is downloaded)
* Within llama.cpp repo we already merged a [PR](https://github.com/ggerganov/llama.cpp/pull/4858) for some changes to convert.py to support metadata override (to add some missing authorship information)

## Replication Steps

For the most current replication steps, refer to the bash script `llamafile-creation.sh` in this repo.

You may want to also check these [output of convert_hf_to_gguf](convert_hf_to_gguf.output.txt) and [output of the generated llamafile](./llamafile_output_example.output.txt) to sanity check that you got the right process if you feel like your output doesn't quite make sense.

If interested in the internal content of this model you can check [Tinyllama-4.6M-v0.0-F16.dump.md](./Tinyllama-4.6M-v0.0-F16.dump.md) included in this repo as well which would be helpful if you are curious about the structure of a gguf file.