mirror of https://github.com/ollama/ollama.git
				
				
				
			Revert "Merge pull request #4938 from ollama/mxyng/fix-byte-order"
This reverts commitf5f245cc15, reversing changes made to94d37fdcae. this change broke gguf v2 which is incorrectly detected as big endian
This commit is contained in:
		
							parent
							
								
									0f3cf1d42e
								
							
						
					
					
						commit
						7bdcd1da94
					
				
							
								
								
									
										13
									
								
								llm/ggml.go
								
								
								
								
							
							
						
						
									
										13
									
								
								llm/ggml.go
								
								
								
								
							| 
						 | 
				
			
			@ -231,7 +231,8 @@ const (
 | 
			
		|||
	// Magic constant for `ggla` files (LoRA adapter).
 | 
			
		||||
	FILE_MAGIC_GGLA = 0x67676C61
 | 
			
		||||
	// Magic constant for `gguf` files (versioned, gguf)
 | 
			
		||||
	FILE_MAGIC_GGUF = 0x46554747
 | 
			
		||||
	FILE_MAGIC_GGUF_LE = 0x46554747
 | 
			
		||||
	FILE_MAGIC_GGUF_BE = 0x47475546
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var ErrUnsupportedFormat = errors.New("unsupported model format")
 | 
			
		||||
| 
						 | 
				
			
			@ -246,7 +247,7 @@ func DetectGGMLType(b []byte) string {
 | 
			
		|||
		return "ggjt"
 | 
			
		||||
	case FILE_MAGIC_GGLA:
 | 
			
		||||
		return "ggla"
 | 
			
		||||
	case FILE_MAGIC_GGUF:
 | 
			
		||||
	case FILE_MAGIC_GGUF_LE, FILE_MAGIC_GGUF_BE:
 | 
			
		||||
		return "gguf"
 | 
			
		||||
	default:
 | 
			
		||||
		return ""
 | 
			
		||||
| 
						 | 
				
			
			@ -254,19 +255,21 @@ func DetectGGMLType(b []byte) string {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
func DecodeGGML(rs io.ReadSeeker) (*GGML, int64, error) {
 | 
			
		||||
	var magic [4]byte
 | 
			
		||||
	var magic uint32
 | 
			
		||||
	if err := binary.Read(rs, binary.LittleEndian, &magic); err != nil {
 | 
			
		||||
		return nil, 0, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	var c container
 | 
			
		||||
	switch binary.LittleEndian.Uint32(magic[:]) {
 | 
			
		||||
	switch magic {
 | 
			
		||||
	case FILE_MAGIC_GGML, FILE_MAGIC_GGMF, FILE_MAGIC_GGJT:
 | 
			
		||||
		return nil, 0, ErrUnsupportedFormat
 | 
			
		||||
	case FILE_MAGIC_GGLA:
 | 
			
		||||
		c = &containerGGLA{}
 | 
			
		||||
	case FILE_MAGIC_GGUF:
 | 
			
		||||
	case FILE_MAGIC_GGUF_LE:
 | 
			
		||||
		c = &containerGGUF{ByteOrder: binary.LittleEndian}
 | 
			
		||||
	case FILE_MAGIC_GGUF_BE:
 | 
			
		||||
		c = &containerGGUF{ByteOrder: binary.BigEndian}
 | 
			
		||||
	default:
 | 
			
		||||
		return nil, 0, errors.New("invalid file magic")
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										15
									
								
								llm/gguf.go
								
								
								
								
							
							
						
						
									
										15
									
								
								llm/gguf.go
								
								
								
								
							| 
						 | 
				
			
			@ -36,23 +36,10 @@ func (c *containerGGUF) Name() string {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
func (c *containerGGUF) Decode(rs io.ReadSeeker) (model, error) {
 | 
			
		||||
	var version [4]byte
 | 
			
		||||
	if err := binary.Read(rs, c.ByteOrder, &version); err != nil {
 | 
			
		||||
	if err := binary.Read(rs, c.ByteOrder, &c.Version); err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// if the lower 16 bits are 0, the byte order is probably wrong
 | 
			
		||||
	if c.ByteOrder.Uint32(version[:])&1<<4 == 0 {
 | 
			
		||||
		switch c.ByteOrder {
 | 
			
		||||
		case binary.LittleEndian:
 | 
			
		||||
			c.ByteOrder = binary.BigEndian
 | 
			
		||||
		case binary.BigEndian:
 | 
			
		||||
			c.ByteOrder = binary.LittleEndian
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	c.Version = c.ByteOrder.Uint32(version[:])
 | 
			
		||||
 | 
			
		||||
	var err error
 | 
			
		||||
	switch c.Version {
 | 
			
		||||
	case 1:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue