llama2.c
towhee
llama2.c | towhee | |
---|---|---|
13 | 26 | |
16,071 | 3,010 | |
- | 2.0% | |
9.2 | 8.6 | |
10 days ago | 4 months ago | |
C | Python | |
MIT License | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
llama2.c
-
Stuff we figured out about AI in 2023
FOr inference, less than 1KLOC of pure, dependency-free C is enough (if you include the tokenizer and command line parsing)[1]. This was a non-obvious fact for me, in principle, you could run a modern LLM 20 years ago with just 1000 lines of code, assuming you're fine with things potentially taking days to run of course.
Training wouldn't be that much harder, Micrograd[2] is 200LOC of pure Python, 1000 lines would probably be enough for training an (extremely slow) LLM. By "extremely slow", I mean that a training run that normally takes hours could probably take dozens of years, but the results would, in principle, be the same.
If you were writing in C instead of Python and used something like Llama CPP's optimization tricks, you could probably get somewhat acceptable training performance in 2 or 3 KLOC. You'd still be off by one or two orders of magnitude when compared to a GPU cluster, but a lot better than naive, loopy Python.
[1] https://github.com/karpathy/llama2.c
[2] https://github.com/karpathy/micrograd
-
Minimal neural network implementation
A bit off topic but ML-guru Mr Karpathy has implemented a state-of-art Llama2 model in a plain C with no dependencies on 3rd party/freeware libraries. See repo.
-
WebLLM: Llama2 in the Browser
Related. I built karpathy’s llama2.c (https://github.com/karpathy/llama2.c) without modifications to WASM and run it in the browser. It was a fun exercise to directly compare native vs. Web perf. Getting 80% of native performance on my M1 Macbook Air and haven’t spent anytime optimizing the WASM side.
Demo: https://diegomarcos.com/llama2.c-web/
Code:
-
Lfortran: Modern interactive LLVM-based Fortran compiler
Would be cool for there to be a `llama2.f`, similar to https://github.com/karpathy/llama2.c, to demo it's capabilities
-
Llama2.c L2E LLM – Multi OS Binary and Unikernel Release
This is a fork of https://github.com/karpathy/llama2.c
karpathy's llama2.c is like llama.cpp but it is written in C and the python training code is available in that same repo. llama2.c's goal is to be a elegant single file C implementation of the inference and an elegant python implementation for training.
His goal is for people to understand how llama 2 and LLM's work, so he keeps it simple and sweet. As the project progresses, so will features and performance improvements added.
Currently it can infer baby (small) Story models trained by Karpathy at a fast pace. It can also infer Meta LLAMA 2 7b models, but at a very slow rate such as 1 token per second.
So currently this can be used for learning or as a tech preview.
Our friendly fork tries to make it portable, performant and more usable (bells and whistles) over time. Since we mirror upstream closely, the inference capabilities of our fork is similar but slightly faster if compiled with acceleration. What we try to do different is that we try to make this bootable (not there yet) and portable. Right now you can get binary portablity - use the same run.com on any x86_64 machine running on any OS, it will work (possible due to cosmopolitan toolchain). The other part that works is unikernels - boot this as unikernel in VM's (possible due unikraft unikernel & toolchain).
See our fork currently as a release early and release often toy tech demo. We plan to build it out into a useful product.
- FLaNK Stack Weekly for 14 Aug 2023
-
Adding LLaMa2.c support for Web with GGML.JS
In my latest release of ggml.js, I've added support for Karapathy's llama2.c model.
-
Beginner's Guide to Llama Models
I really enjoyed Anrej Kaparthy's llama2.c project (https://github.com/karpathy/llama2.c), which runs through creating and running a miniature Llama2 architecture model from scratch.
-
How to scale LLMs better with an alternative to transformers
- https://github.com/karpathy/llama2.c
I think there may be some applications in this limited space that are worth looking into. You won’t replicate GPT-anything but it may be possible to solve some nice problems very much more efficiently that one would expect at first.
-
A simple guide to fine-tuning Llama 2
It does now: https://github.com/karpathy/llama2.c#metas-llama-2-models
towhee
- FLaNK Stack Weekly for 14 Aug 2023
- Welcome to generate your embeddings with Towhee
-
Vector database built for scalable similarity search
As another commenter noted, Milvus is overkill and a "bit much" if you're learning/playing.
A good intro to the field with progression towards a full Milvus implementation could be starting with towhee[0] (which is also supported by Milvus).
towhee has an example to do exactly what you want with CLIP[1].
[0] - https://towhee.io/
[1] - https://github.com/towhee-io/examples/tree/main/image/text_i...
-
What Is DocArray?
The description of this is kind of confusing but I think the easiest way to understand it is that it is a data processing pipeline of sorts. Take unstructured data and apply transformation and computation. A similar project to this is Towhee (https://github.com/towhee-io/towhee). This project tries to simplify unstructured data processing and provides pretrained models and pipelines from their hub.
-
[P] My co-founder and I quit our engineering jobs at AWS to build “Tensor Search”. Here is why.
Milvus also has incredible flexibility when it comes to choosing an indexing strategy, and we also have a library specifically meant to help vectorize a variety of data called Towhee (https://github.com/towhee-io/towhee).
-
Deep Dive into Real-World Image Search Engine with Python
Benchmarking the models with towhee is as simple as:
-
A quick tip on DataFrame.apply
The project's homepage is https://github.com/towhee-io/towhee, and you can find more about towhee by going through the documents.
-
Build an Image Search Engine in Minutes
I made a tutorial for building an image search engine with python. The code example is as simple as 10 lines of code, using Towhee and Milvus To put images into the search engine:
-
Any good libraries for feature extraction?
Traditionally, I've done this through PyTorch by adding a hook, but this requires knowledge of the model itself (i.e. model arch and layer names). I found https://github.com/Hironsan/awesome-embedding-models but it didn't provide many CV-focused open-source projects. There's also https://github.com/towhee-io/towhee which is great but more targeted towards application development.
-
A python framework for unstructured data processing
You can check the result from the tutorial.
What are some alternatives?
llama2.c - Llama 2 Everywhere (L2E)
qdrant - Qdrant - High-performance, massive-scale Vector Database for the next generation of AI. Also available in the cloud https://cloud.qdrant.io/
fastGPT - Fast GPT-2 inference written in Fortran
Milvus - A cloud-native vector database, storage for next generation AI applications
CML_AMP_Churn_Prediction_mlflow - Build an scikit-learn model to predict churn using customer telco data.
examples - Analyze the unstructured data with Towhee, such as reverse image search, reverse video search, audio classification, question and answer systems, molecular search, etc.
feldera - Feldera Continuous Analytics Platform
PySceneDetect - :movie_camera: Python and OpenCV-based scene cut/transition detection program & library.
awesome-data-temporality - A curated list to help you manage temporal data across many modalities 🚀.
AI - Artificial Intelligence Projects
dify - Dify is an open-source LLM app development platform. Dify's intuitive interface combines AI workflow, RAG pipeline, agent capabilities, model management, observability features and more, letting you quickly go from prototype to production.
pgvector - Open-source vector similarity search for Postgres