Top Level Namespace

Defined Under Namespace

Modules: Kiribi

Constant Summary collapse

GEM_NAME =
"kiribi-gemma4_e2b"
HF_REPO =
"matsudai17/gemma-4-E2B-it-ONNX"
HF_BASE_URL =
"https://huggingface.co/#{HF_REPO}/resolve/main/onnx"
MODEL_FILES =
%w[
  embed_tokens.onnx
  embed_tokens.onnx_data
  embed_tokens.onnx_data_1
  decoder_model_merged.onnx
  decoder_model_merged.onnx_data
  decoder_model_merged.onnx_data_1
  decoder_model_merged.onnx_data_2
  decoder_model_merged.onnx_data_3
  decoder_model_merged.onnx_data_4
  vision_encoder.onnx
  vision_encoder.onnx_data
  audio_encoder.onnx
  audio_encoder.onnx_data
]
TOKENIZER_FILE =
"tokenizer.json"
TOKENIZER_URL =
"https://huggingface.co/#{HF_REPO}/resolve/main/#{TOKENIZER_FILE}"
BUILD_DIRPATH =
File.expand_path(File.join(__dir__, "../../lib/#{GEM_NAME}/vendor/build"))

Instance Method Summary collapse

Instance Method Details

#download_file(url, dest) ⇒ Object



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
# File 'ext/kiribi-gemma4_e2b/extconf.rb', line 30

def download_file(url, dest)
  redirect_count = 0
  loop do
    raise "Too many redirects" if redirect_count >= 10

    uri = URI.parse(url)
    http = Net::HTTP.new(uri.host, uri.port)
    http.use_ssl = (uri.scheme == "https")
    request = Net::HTTP::Get.new(uri.request_uri)

    http.request(request) do |resp|
      case resp
      when Net::HTTPSuccess
        FileUtils.mkdir_p(File.dirname(dest))
        File.open(dest, "wb") do |f|
          resp.read_body { |chunk| f.write(chunk) }
        end
        return
      when Net::HTTPRedirection
        url = resp["Location"]
        redirect_count += 1
      else
        raise "HTTP request failed for #{url} (status code: #{resp.code})"
      end
    end
  end
end