Skip to content

Commit ee5b850

Browse files
authored
Merge pull request #11 from OpenBMB/pr_add_all_in_llava
Pr add all in llava
2 parents c390dd4 + efe4c61 commit ee5b850

21 files changed

+765
-2585
lines changed

Makefile

+5-5
Original file line numberDiff line numberDiff line change
@@ -910,12 +910,12 @@ llava-cli: examples/llava/llava-cli.cpp examples/llava/clip.h examples/llava/cli
910910
$(CXX) $(CXXFLAGS) -c examples/llava/llava.cpp -o $(call GET_OBJ_FILE, examples/llava/llava.cpp)
911911
$(CXX) $(CXXFLAGS) $(filter-out %.h $< examples/llava/clip.cpp examples/llava/llava.cpp,$^) $(call GET_OBJ_FILE, $<) $(call GET_OBJ_FILE, examples/llava/clip.cpp) $(call GET_OBJ_FILE, examples/llava/llava.cpp) -o $@ $(LDFLAGS)
912912

913-
minicpmv-cli: examples/minicpmv/minicpmv-cli.cpp examples/minicpmv/clip.h examples/minicpmv/clip.cpp examples/minicpmv/minicpmv.h examples/minicpmv/minicpmv.cpp examples/minicpmv/minicpmv_wrapper.h examples/minicpmv/minicpmv_wrapper.cpp ggml.o llama.o $(COMMON_DEPS) $(OBJS)
913+
minicpmv-cli: examples/llava/minicpmv-cli.cpp examples/llava/clip.h examples/llava/clip.cpp examples/llava/llava.h examples/llava/llava.cpp examples/llava/minicpmv_wrapper.h examples/llava/minicpmv_wrapper.cpp ggml.o llama.o $(COMMON_DEPS) $(OBJS)
914914
$(CXX) $(CXXFLAGS) -c $< -o $(call GET_OBJ_FILE, $<)
915-
$(CXX) $(CXXFLAGS) -c examples/minicpmv/clip.cpp -o $(call GET_OBJ_FILE, examples/minicpmv/clip.cpp) -Wno-cast-qual
916-
$(CXX) $(CXXFLAGS) -c examples/minicpmv/minicpmv.cpp -o $(call GET_OBJ_FILE, examples/minicpmv/minicpmv.cpp)
917-
$(CXX) $(CXXFLAGS) -c examples/minicpmv/minicpmv_wrapper.cpp -o $(call GET_OBJ_FILE, examples/minicpmv/minicpmv_wrapper.cpp)
918-
$(CXX) $(CXXFLAGS) $(filter-out %.h $< examples/minicpmv/clip.cpp examples/minicpmv/minicpmv.cpp examples/minicpmv/minicpmv_wrapper.cpp,$^) $(call GET_OBJ_FILE, $<) $(call GET_OBJ_FILE, examples/minicpmv/clip.cpp) $(call GET_OBJ_FILE, examples/minicpmv/minicpmv.cpp) $(call GET_OBJ_FILE, examples/minicpmv/minicpmv_wrapper.cpp) -o $@ $(LDFLAGS)
915+
$(CXX) $(CXXFLAGS) -c examples/llava/clip.cpp -o $(call GET_OBJ_FILE, examples/llava/clip.cpp) -Wno-cast-qual
916+
$(CXX) $(CXXFLAGS) -c examples/llava/llava.cpp -o $(call GET_OBJ_FILE, examples/llava/llava.cpp)
917+
$(CXX) $(CXXFLAGS) -c examples/llava/minicpmv_wrapper.cpp -o $(call GET_OBJ_FILE, examples/llava/minicpmv_wrapper.cpp)
918+
$(CXX) $(CXXFLAGS) $(filter-out %.h $< examples/llava/clip.cpp examples/llava/llava.cpp examples/llava/minicpmv_wrapper.cpp,$^) $(call GET_OBJ_FILE, $<) $(call GET_OBJ_FILE, examples/llava/clip.cpp) $(call GET_OBJ_FILE, examples/llava/llava.cpp) $(call GET_OBJ_FILE, examples/llava/minicpmv_wrapper.cpp) -o $@ $(LDFLAGS)
919919

920920
baby-llama: examples/baby-llama/baby-llama.cpp ggml.o llama.o $(COMMON_DEPS) train.o $(OBJS)
921921
$(CXX) $(CXXFLAGS) -c $< -o $(call GET_OBJ_FILE, $<)

convert-hf-to-gguf.py

+38
Original file line numberDiff line numberDiff line change
@@ -673,6 +673,44 @@ def set_gguf_parameters(self):
673673
self.gguf_writer.add_parallel_residual(self.hparams.get("use_parallel_residual", True))
674674
self.gguf_writer.add_layer_norm_eps(self.hparams["layer_norm_eps"])
675675

676+
def modify_tensors(self, data_torch: Tensor, name: str, bid: int | None) -> Iterable[tuple[str, Tensor]]:
677+
del bid # unused
678+
679+
n_head = self.hparams.get("n_head", self.hparams.get("num_attention_heads"))
680+
n_embed = self.hparams.get("hidden_size", self.hparams.get("n_embed"))
681+
682+
tensors: list[tuple[str, Tensor]] = []
683+
684+
if re.match(r"gpt_neox\.layers\.\d+\.attention\.query_key_value\.weight", name):
685+
# Map bloom-style qkv_linear to gpt-style qkv_linear
686+
# bloom: https://github.com/huggingface/transformers/blob/main/src/transformers/models/bloom/modeling_bloom.py#L238-L252 # noqa
687+
# gpt-2: https://github.com/huggingface/transformers/blob/main/src/transformers/models/gpt2/modeling_gpt2.py#L312 # noqa
688+
qkv_weights = data_torch.reshape((n_head, 3, n_embed // n_head, n_embed))
689+
data_torch = torch.cat(
690+
(
691+
qkv_weights[:, 0, :, :].reshape((-1, n_embed)),
692+
qkv_weights[:, 1, :, :].reshape((-1, n_embed)),
693+
qkv_weights[:, 2, :, :].reshape((-1, n_embed)),
694+
),
695+
dim=0,
696+
)
697+
logger.info("re-format attention.linear_qkv.weight")
698+
elif re.match(r"gpt_neox\.layers\.\d+\.attention\.query_key_value\.bias", name):
699+
qkv_bias = data_torch.reshape((n_head, 3, n_embed // n_head))
700+
data_torch = torch.cat(
701+
(
702+
qkv_bias[:, 0, :].reshape((n_embed,)),
703+
qkv_bias[:, 1, :].reshape((n_embed,)),
704+
qkv_bias[:, 2, :].reshape((n_embed,)),
705+
),
706+
dim=0,
707+
)
708+
logger.info("re-format attention.linear_qkv.bias")
709+
710+
tensors.append((self.map_tensor_name(name), data_torch))
711+
712+
return tensors
713+
676714

677715
@Model.register("BloomForCausalLM")
678716
class BloomModel(Model):

examples/llava/CMakeLists.txt

+5
Original file line numberDiff line numberDiff line change
@@ -35,3 +35,8 @@ add_executable(llava-cli llava-cli.cpp)
3535
install(TARGETS llava-cli RUNTIME)
3636
target_link_libraries(llava-cli PRIVATE common llava ${CMAKE_THREAD_LIBS_INIT})
3737
target_compile_features(llava PRIVATE cxx_std_11)
38+
39+
add_library(minicpmv_wrapper OBJECT
40+
minicpmv_wrapper.cpp
41+
)
42+
target_link_libraries(minicpmv_wrapper PRIVATE llava ${CMAKE_THREAD_LIBS_INIT})
File renamed without changes.

0 commit comments

Comments
 (0)