summaryrefslogtreecommitdiff
path: root/llmc/cmd/data/minipile.go
blob: 2afeffeb624a436c575f2a383e5d5149310b5717 (plain)
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
package main

import (
	"log"

	"go.jknobloc.com/x/dataset"
	"go.jknobloc.com/x/llm"
	"go.jknobloc.com/x/llmc"
	"go.jknobloc.com/x/shelf"
	"go.jknobloc.com/x/tokenizer/bpe"
)

func miniPile() {
	prepareSplit := func(datasetPath, shardName string) {
		var reader dataset.Reader

		if r, err := dataset.NewParquetReader(datasetPath); err != nil {
			log.Fatal(err)
		} else {
			reader = r
		}

		var tokenizer llm.Tokenizer

		v := shelf.Abs("tokenizers/tokenizer_gpt2_50256_m000_minipile/vocab.json")
		m := shelf.Abs("tokenizers/tokenizer_gpt2_50256_m000_minipile/merges.txt")

		if t, err := bpe.NewTokenizerFromFiles(v, m, bpe.DefaultConfig()); err != nil {
			log.Fatal(err)
		} else {
			tokenizer = t
		}

		docs := llmc.TokenizeAll(reader, tokenizer, 50256)

		if _, err := llmc.WriteShards(shelf.Abs("llmc/minipile/m000"), "", 100_000_000, docs); err != nil {
			log.Fatal(err)
		}

		if err := reader.Err(); err != nil {
			log.Fatal(err)
		}
	}

	prepareSplit(shelf.Abs("data/minipile/train"), "minipile_train")
	prepareSplit(shelf.Abs("data/minipile/validation"), "minipile_val")
}