Alex W. commited on
Commit
e1ce951
ยท
1 Parent(s): a2dfa0f

debug for gemma-4-31b-it

Browse files
Files changed (1) hide show
  1. core/fetcher.py +32 -3
core/fetcher.py CHANGED
@@ -80,7 +80,6 @@ def load_tensor_remote(
80
  header_size: int,
81
  token: str = None
82
  ) -> torch.Tensor | None:
83
- """่ฟœ็จ‹ๅŠ ่ฝฝๅ•ไธช tensor๏ผŒ่ฟ”ๅ›ž float32"""
84
  if tensor_name not in header:
85
  return None
86
 
@@ -94,10 +93,27 @@ def load_tensor_remote(
94
  if dtype_str in UNSUPPORTED_SVD_DTYPES:
95
  raise ValueError(f"dtype={dtype_str} ไธบ้‡ๅŒ–ๆ ผๅผ๏ผŒๆ— ๆณ• SVD")
96
 
97
- torch_dtype, _ = DTYPE_MAP[dtype_str]
98
  abs_start = 8 + header_size + offsets[0]
99
  abs_end = 8 + header_size + offsets[1] - 1
100
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
101
  req_headers = {"Range": f"bytes={abs_start}-{abs_end}"}
102
  if token:
103
  req_headers["Authorization"] = f"Bearer {token}"
@@ -105,6 +121,14 @@ def load_tensor_remote(
105
  r = requests.get(url, headers=req_headers, timeout=120)
106
  r.raise_for_status()
107
 
 
 
 
 
 
 
 
 
108
  if torch_dtype == torch.bfloat16:
109
  tensor = torch.frombuffer(
110
  bytearray(r.content), dtype=torch.int16
@@ -112,7 +136,12 @@ def load_tensor_remote(
112
  else:
113
  tensor = torch.frombuffer(bytearray(r.content), dtype=torch_dtype)
114
 
115
- return tensor.reshape(shape).float()
 
 
 
 
 
116
 
117
 
118
  # โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
 
80
  header_size: int,
81
  token: str = None
82
  ) -> torch.Tensor | None:
 
83
  if tensor_name not in header:
84
  return None
85
 
 
93
  if dtype_str in UNSUPPORTED_SVD_DTYPES:
94
  raise ValueError(f"dtype={dtype_str} ไธบ้‡ๅŒ–ๆ ผๅผ๏ผŒๆ— ๆณ• SVD")
95
 
96
+ torch_dtype, bytes_per_elem = DTYPE_MAP[dtype_str]
97
  abs_start = 8 + header_size + offsets[0]
98
  abs_end = 8 + header_size + offsets[1] - 1
99
 
100
+ # โ”€โ”€ ่ฐƒ่ฏ•๏ผšๆ‰“ๅฐๅ็งปไฟกๆฏ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
101
+ expected_bytes = offsets[1] - offsets[0]
102
+ expected_elems = 1
103
+ for d in shape:
104
+ expected_elems *= d
105
+ print(
106
+ f"[FETCH] {tensor_name}\n"
107
+ f" shape={shape} dtype={dtype_str}\n"
108
+ f" data_offsets={offsets}\n"
109
+ f" abs_start={abs_start} abs_end={abs_end}\n"
110
+ f" expected_bytes={expected_bytes} "
111
+ f"expected_elems={expected_elems} "
112
+ f"bytes_per_elem={bytes_per_elem}\n"
113
+ f" check: {expected_elems * bytes_per_elem} == {expected_bytes} "
114
+ f"{'โœ…' if expected_elems * bytes_per_elem == expected_bytes else 'โŒ ไธๅŒน้…!'}\n"
115
+ )
116
+
117
  req_headers = {"Range": f"bytes={abs_start}-{abs_end}"}
118
  if token:
119
  req_headers["Authorization"] = f"Bearer {token}"
 
121
  r = requests.get(url, headers=req_headers, timeout=120)
122
  r.raise_for_status()
123
 
124
+ # โ”€โ”€ ่ฐƒ่ฏ•๏ผšๆ‰“ๅฐๅฎž้™…ๆ”ถๅˆฐ็š„ๅญ—่Š‚ๆ•ฐ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
125
+ actual_bytes = len(r.content)
126
+ print(
127
+ f" actual_bytes={actual_bytes} "
128
+ f"{'โœ…' if actual_bytes == expected_bytes else 'โŒ ๅญ—่Š‚ๆ•ฐไธๅŒน้…!'}\n"
129
+ f" ๅ‰8ๅญ—่Š‚(hex)={r.content[:8].hex()}\n"
130
+ )
131
+
132
  if torch_dtype == torch.bfloat16:
133
  tensor = torch.frombuffer(
134
  bytearray(r.content), dtype=torch.int16
 
136
  else:
137
  tensor = torch.frombuffer(bytearray(r.content), dtype=torch_dtype)
138
 
139
+ result = tensor.reshape(shape).float()
140
+
141
+ # โ”€โ”€ ่ฐƒ่ฏ•๏ผšๆ‰“ๅฐ็ป“ๆžœ้ฆ–่กŒ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
142
+ print(f" result[0,:5]={result[0,:5].tolist()}\n")
143
+
144
+ return result
145
 
146
 
147
  # โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€