Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
B
Basedformer
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
novelai-storage
Basedformer
Commits
0f8be39c
Commit
0f8be39c
authored
Jul 04, 2022
by
novelailab
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
change metadata -> index in ShardedImageDataset
parent
cb67abcb
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
12 additions
and
12 deletions
+12
-12
basedformer/dataset.py
basedformer/dataset.py
+12
-12
No files found.
basedformer/dataset.py
View file @
0f8be39c
...
...
@@ -45,7 +45,7 @@ class ShardedDataset(data.Dataset):
return
(
data
[:
-
1
],
data
[
1
:])
class
ShardedImageDataset
(
data
.
Dataset
):
def
__init__
(
self
,
dataset_path
:
str
,
metadata
_path
:
str
,
threads
=
None
,
inner_transform
=
None
,
def
__init__
(
self
,
dataset_path
:
str
,
index
_path
:
str
,
threads
=
None
,
inner_transform
=
None
,
outer_transform
=
None
,
skip
=
0
,
bsz
=
256
,
world_size
=
1
,
local_rank
=
0
,
global_rank
=
0
,
device
=
"cpu"
):
self
.
skip
=
skip
...
...
@@ -60,36 +60,36 @@ class ShardedImageDataset(data.Dataset):
self
.
local_rank
=
local_rank
self
.
global_rank
=
global_rank
self
.
device
=
device
with
open
(
metadata
_path
,
'rb'
)
as
f
:
self
.
metadata
=
pickle
.
load
(
f
)
with
open
(
index
_path
,
'rb'
)
as
f
:
self
.
index
=
pickle
.
load
(
f
)
with
open
(
self
.
dataset_path
,
mode
=
"r"
)
as
file_obj
:
self
.
mmap
=
mmap
.
mmap
(
file_obj
.
fileno
(),
length
=
0
,
access
=
mmap
.
ACCESS_READ
)
#make so metadata is shardable by world_size(num_gpus)
#and batch_size
self
.
metadata
=
self
.
metadata
[:
len
(
self
.
metadata
)
-
(
len
(
self
.
metadata
)
%
(
bsz
*
world_size
))]
self
.
index
=
self
.
index
[:
len
(
self
.
index
)
-
(
len
(
self
.
index
)
%
(
bsz
*
world_size
))]
#shard the dataset according to the rank
self
.
metadata
=
self
.
metadata
[
global_rank
::
world_size
]
#override possible gil locks by making the
metadata
map an nparray
self
.
metadata
=
np
.
array
(
self
.
metadata
)
self
.
index
=
self
.
index
[
global_rank
::
world_size
]
#override possible gil locks by making the
index
map an nparray
self
.
index
=
np
.
array
(
self
.
index
)
self
.
executor
=
concurrent
.
futures
.
ThreadPoolExecutor
(
max_workers
=
self
.
threads
)
def
__len__
(
self
):
return
len
(
self
.
metadata
)
//
self
.
bsz
return
len
(
self
.
index
)
//
self
.
bsz
def
__getitem__
(
self
,
key
):
key
=
self
.
skip
+
key
keys
=
[
*
range
(
key
,
key
+
self
.
bsz
)]
tensors
=
self
.
executor
.
map
(
self
.
read_from_
metadata
_key
,
keys
)
tensors
=
self
.
executor
.
map
(
self
.
read_from_
index
_key
,
keys
)
tensors
=
list
(
tensors
)
#make sure these operations are fast!
ids
=
[
t
[
1
]
for
t
in
tensors
]
tensors
=
torch
.
stack
([
t
[
0
]
for
t
in
tensors
])
if
self
.
device
==
"cuda"
:
tensors
=
tensors
.
to
(
self
.
local_rank
)
tensors
=
tensors
.
permute
(
0
,
3
,
1
,
2
)
.
float
()
#####################################
if
self
.
outer_transform
:
...
...
@@ -97,8 +97,8 @@ class ShardedImageDataset(data.Dataset):
return
tensors
,
ids
def
read_from_
metadata
_key
(
self
,
key
):
offset
,
size
,
id
=
self
.
metadata
[
key
]
def
read_from_
index
_key
(
self
,
key
):
offset
,
size
,
id
=
self
.
index
[
key
]
data
=
self
.
mmap
[
offset
:
offset
+
size
]
data
=
decode_jpeg
(
data
)
data
=
torch
.
from_numpy
(
data
)
#.permute(2, 0, 1)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment