| Commit message (Collapse) | Author | Age |
|
|
|
| |
PiperOrigin-RevId: 197769770
|
|
|
|
|
|
| |
depend on framework/resource_handler and framework/variant.
PiperOrigin-RevId: 197768387
|
|
|
|
| |
PiperOrigin-RevId: 197759239
|
|
|
|
|
|
|
|
| |
Allows tracking of Layers and other checkpointable objects by number.
Fixes #19250.
PiperOrigin-RevId: 197749961
|
|
|
|
| |
PiperOrigin-RevId: 197747430
|
|
|
|
| |
PiperOrigin-RevId: 197743291
|
|
|
|
| |
PiperOrigin-RevId: 197742412
|
|
|
|
| |
PiperOrigin-RevId: 197742114
|
| |
|
|
|
|
| |
PiperOrigin-RevId: 197741341
|
|
|
|
| |
PiperOrigin-RevId: 197739982
|
|
|
|
| |
PiperOrigin-RevId: 197736600
|
|
|
|
| |
PiperOrigin-RevId: 197736184
|
|
|
|
|
|
|
|
| |
owned by an XlaTensor.
Add an equality operator for xla::ShapeIndexView.
PiperOrigin-RevId: 197716313
|
|
|
|
| |
PiperOrigin-RevId: 197708758
|
|
|
|
| |
PiperOrigin-RevId: 197673355
|
|
|
|
| |
PiperOrigin-RevId: 197661636
|
|
|
|
|
|
|
|
| |
backend-independent offline auto-tuner for backend configurations of ops as well as automatic testing across candidate configurations.
Also add a simple Scanner class that is handy for parsing things.
PiperOrigin-RevId: 197657512
|
|
|
|
| |
PiperOrigin-RevId: 197650140
|
|
|
|
| |
PiperOrigin-RevId: 197650067
|
|
|
|
| |
PiperOrigin-RevId: 197644290
|
|
|
|
| |
PiperOrigin-RevId: 197643581
|
|
|
|
|
|
|
| |
python interface functions. Note that they are not yet fully
implemented; this change is to facilitate further development.
PiperOrigin-RevId: 197639372
|
|
|
|
|
|
| |
the stat cache.
PiperOrigin-RevId: 197637482
|
|
|
|
| |
PiperOrigin-RevId: 197634162
|
|
|
|
| |
PiperOrigin-RevId: 197633182
|
|
|
|
| |
PiperOrigin-RevId: 197629355
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
RowMajorMatrixVectorProductEmitter and ColumnMajorMatrixVectorProductEmitter
both cache* the generated LLVM IR by keying off the dimensions of the operation,
the primitive type etc. Before this CL the code computing the cache key lived
separately from the GEMV emitters. This pattern introduces a risk that the GEMV
emitters will end up with some state not modeled in the cache key, resulting in
a subtle bug.
This CL reduces the risk by escapsulating the cache key generation and the input
configuration to the GEMV emitters in a single class.
* In the sense that two different dot operations with the same M,K,N will share
a single LLVM IR function body.
PiperOrigin-RevId: 197628423
|
|
|
|
|
|
|
| |
This can be used if the user does not care if reachability changed after an
update.
PiperOrigin-RevId: 197628007
|
|
|
|
| |
PiperOrigin-RevId: 197625888
|
|
|
|
| |
PiperOrigin-RevId: 197620560
|
|
|
|
| |
PiperOrigin-RevId: 197618934
|
|
|
|
|
|
|
|
| |
Complete just enough of the core implementation to run
multi-device collectives locally within a single process.
Interfaces are still private and not availble for general use.
PiperOrigin-RevId: 197617132
|
|
|
|
| |
PiperOrigin-RevId: 197611583
|
|
|
|
|
|
| |
Fixes #19385
PiperOrigin-RevId: 197607384
|
|
|
|
| |
PiperOrigin-RevId: 197606059
|
|
|
|
|
|
|
| |
This is an intermediate step until we have working multi-output fusion. Once
we have it, this change should be reverted as it might interfere with fusion.
PiperOrigin-RevId: 197605814
|
|
|
|
|
|
|
|
| |
This is limited to reduces that have the same shapes and reduced dimensions.
Most of the code is making the individual emission code emit multiple reduction
in the same loop. This requires multi-output fusion to provide a speedup.
PiperOrigin-RevId: 197599248
|
|
|
|
| |
PiperOrigin-RevId: 197597953
|
|
|
|
|
|
|
| |
* Create consts once. Otherwise each time the constant is passed to an Op, a new Const op is created.
* Speed up the graph construction by using a functions to build splits.
PiperOrigin-RevId: 197590220
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
of it is stopping training based on evaluation metrics. Example usage is as follows:
my-estimator = tf.estimator.DNNClassifier(...)
stopper = StopTrainingBasedOnEvaluateMetrics(my-estimator)
my-estimator.train(..., saving_listeners=[stopper])
where:
class StopTrainingBasedOnEvaluateMetrics(tf.train.CheckpointSaverListener):
"""A saver listener to run evaluate with every checkpoint."""
def __init__(self, estimator):
self._estimator = estimator
def after_save(self, session, global_step_value):
eval_results = self._estimator.evaluate(...)
if stop-if-started-overfitting(eval_results):
return True
PiperOrigin-RevId: 197586515
|
|
|
|
|
|
| |
Eager execution doesn't implement device stacks and in particular it doesn't support device functions (which determine the device on a per-op basis), so in general it's not possible to do the same when lifting into the eager context.
PiperOrigin-RevId: 197583446
|
|
|
|
| |
PiperOrigin-RevId: 197576297
|
|
|
|
| |
PiperOrigin-RevId: 197571618
|
|
|
|
| |
PiperOrigin-RevId: 197564905
|
|
|
|
| |
PiperOrigin-RevId: 197564506
|
|
|
|
| |
PiperOrigin-RevId: 197564254
|
|
|
|
| |
PiperOrigin-RevId: 197562826
|
|
|
|
|
|
|
| |
Buildifier recently started sorting load args
https://github.com/bazelbuild/buildtools/commit/3ac5f85b22bc44820c041d0cacd3bc2ed54e7742 which causes diffs in the output.
PiperOrigin-RevId: 197556554
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This optimizes ShapeTree quite significantly. In particular this optimizes for the common case of querying/iterating, copying and moving ShapeTrees.
* Allocate all ShapeTreeNodes inside a single, owned, vector. This reduces the number of memory allocations and improves cache performance.
* Instead of storing children nodes as unique_ptrs, store them as indices into the owning container's vector. This allows cheap copy-construction (a std::vector POD copy) and doesn't change the fast path (dereferencing a pointer is just as fast as dereferencing a base + offset).
* Instead of a unique_ptr<Shape>, use a shared_ptr<Shape>. This removes a load of copy-construction overhead at the cost of a shared_ptr over a unique_ptr (one extra allocation).
* Instead of computing ShapeIndexes on-demand in the iterators/ForEach*, precompute them during construction time. This adds a few more bytes per ShapeTree, but now we can...
* ... store a std::pair<ShapeIndex, T> as the ShapeTreeNode's data element. This allows us to provide a std::pair<K,V>&, STL-like interface from iterators without going through any of the previous unique_ptr hacks around storage lifetimes.
* Because we no longer need to iterate from the beginning to build up the ShapeIndex, we can now offer a ::find() function to return an iterator for a ShapeIndex in O(K) time. As the iteration order is guaranteed to be pre-order, this can be used (and will be, later) to speed up the fast-path of mutating a subtree of a ShapeTree from tf2xla::ExtractSubBuffers.
* Similarly because we now have a very standard, cheap STL interface with no performance cliffs, we can hopefully improve ShapedBuffer's copy and move constructors to be cheaper.
PiperOrigin-RevId: 197548717
|